Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Excel 2021)
Listboxにて
投稿日時: 26/06/10 16:49:01
投稿者: yama2026

一般機能で定義した名前を用いて
 
Private Sub ListBox1_Click()
 
ListBox1.List = ListBox4.Value
 
End Sub
 
を実行したところ
 
’ListBox4'は、現在参照されてない’F3Dynamic’ライブラリ内にあるためここへはジャンプできません
というエラーが出ます
 
回避方法のご教示をお願いします

回答
投稿日時: 26/06/10 22:53:44
投稿者: 半平太

F3Dynamic’ライブラリはノーアイデアですが、
一般機能で定義した名前を用いて、と言うことなら、
 
 ListBox1.List = Range("ListBox4").Value
 
と言うことじゃないですか?
 
違ったらごめんなさいです。

投稿日時: 26/06/11 10:05:51
投稿者: yama2026

ありがとうございます
  
試してみましたが
'Range'メソッドは失敗しました:'_Global'オブジェクト
と出ます

回答
投稿日時: 26/06/11 16:07:53
投稿者: Suzu

・「一般機能で定義した名前」とは 何でしょう?
 それが、「ListBox4」なのでしょうか?
 
・この、名前 「ListBox4」を指定したオブジェクトの種類は何なのでしょうか?
 定義した名前を指定できているとすれば、セルの、入力規則を設定した プルダウンリスト?
 
・ListBox1 は、フォーム上の リストボックス でしょうか?
 
・ListBox1 の配置してあるフォームと、
 ListBox4 のあるブックは同じブックでしょうか?
 
・ListBox4 の範囲は、ブックでしょうか?
 
・リストボックスの Listプロパティーは 通常配列です。
 渡している Value は 配列なのでしょうか?
 
・同じフォーム上に、「ListBox4」というコントロールは存在していませんよね?
 
例えば、
適当なボタンを配置して
Private Sub CommandButton1_Click()
  MsgBox Range("ListBox4").Value
End Sub
 
の様に、 名前を指定した Range を取得できている事を確認ください。

投稿日時: 26/06/13 10:08:52
投稿者: yama2026

ありがとうございます
 
>・「一般機能で定義した名前」とは 何でしょう?
> それが、「ListBox4」なのでしょうか?
ListBox4のプロパティRowSourceにjikonogaiyouと直接入力してあります
一般機能の名前定義でjikonogaiyouにセル範囲を指定してあります
そのセル範囲には、薬剤、ドレーン・チューブ類、、、と項目が並んでいます
さらに例えば薬剤であれば薬剤という名前でまた別のセル範囲が指定されています
ListBox4で薬剤を選択した時にListBox1のセル範囲の項目が表示されて選択したいのです
  
>・この、名前 「ListBox4」を指定したオブジェクトの種類は何なのでしょうか?
> 定義した名前を指定できているとすれば、セルの、入力規則を設定した プルダウンリスト?
どこを見たらオブジェクトの種類がわかるのかわかりかねますが
ListBox4のプロパティにはListBox4 ListBoxと出ています
 
>・ListBox1 は、フォーム上の リストボックス でしょうか?
UserForm1に表示されているのでそうだと思います
  
>・ListBox1 の配置してあるフォームと、
> ListBox4 のあるブックは同じブックでしょうか?
同じUserForm1にあるので同じブックです
  
>・ListBox4 の範囲は、ブックでしょうか?
範囲がブックかどうか確認できる方法がわかりません
  
>・リストボックスの Listプロパティーは 通常配列です。
> 渡している Value は 配列なのでしょうか?
まだ作りはじめで値は渡してません。表示が先だと思って質問しています
  
>・同じフォーム上に、「ListBox4」というコントロールは存在していませんよね?
それはないと思います。
  
続く

投稿日時: 26/06/13 10:46:06
投稿者: yama2026

>Private Sub CommandButton1_Click()
> MsgBox Range("ListBox4").Value
>End Sub
実行時エラー'1004':
'Range'メソッドは失敗しました:'_Global'オブジェクト
になってしまいます。

回答
投稿日時: 26/06/13 11:25:15
投稿者: hatena
投稿者のウェブサイトに移動

yama2026 さんの引用:

ListBox4のプロパティRowSourceにjikonogaiyouと直接入力してあります
一般機能の名前定義でjikonogaiyouにセル範囲を指定してあります
そのセル範囲には、薬剤、ドレーン・チューブ類、、、と項目が並んでいます
さらに例えば薬剤であれば薬剤という名前でまた別のセル範囲が指定されています
ListBox4で薬剤を選択した時にListBox1のセル範囲の項目が表示されて選択したいのです

 
まず「ListBox4で薬剤を選択した時に」ということなら設定するイベントはListBox4_Clickではないでしょうか
 
次にそこで選択した項目と同じ名前のセル範囲(名前定義してある)をListBox1のリストに表示したいということでしょうか
もしそうなら、下記のようなコードになります
 
Private Sub ListBox4_Click()
     ListBox1.List = Range(ListBox4.Value).Value
End Sub

あるいは下記でもいいでしょう
 
Private Sub ListBox4_Click()
     ListBox1.RowSource = ListBox4.Value
End Sub

投稿日時: 26/06/13 11:55:41
投稿者: yama2026

>Private Sub ListBox4_Click()
> ListBox1.List = Range(ListBox4.Value).Value
>End Sub
 
これでうまくいきました
  
>Private Sub ListBox4_Click()
> ListBox1.RowSource = ListBox4.Value
>End Sub
 
こちらはGlobal関係のエラーが出ました
 
解決です
 
ありがとうございました
 
また質問すると思いますのでよろしくお願いします