こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シート上のリストボックスに値を表示するには?

エクセル2003です。
コントロールツールボックスからシートにリストボックスを設置しました。
ここに値を指定するにはどうすればいいでしょうか?

フォーム上のリストボックスなら
Private Sub UserForm_Initialize()
UserForm1.ListBox1.RowSource = "Sheet1!a2:a3"
End Sub

とすればいいのですが
シートのイベントにInitializeはありません。

どこのイベントプロシージャーに
「リストボックスに値を表示する」というコードを書けばいいのでしょうか?

シートモジュールにに
Private Sub ListBox1_Click()
UserForm1.ListBox1.RowSource = "Sheet1!a2:a3"
End Sub
としても何も起こりません。


できればファイルを開いた時からリストボックスに値を表示させるようにしたいです。


ご教授よろしくお願い致します。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2011-03-18 21:01:09

QNo.6602536

暇なときに回答ください

質問者が選んだベストアンサー

Sheet1にリストボックスを1つ貼り付け
ThisWorkbookのWorkbook_SheetActivateイベントなどに
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Worksheets("Sheet1").ListBox1.ListFillRange = "Sheet1!a1:a3"
End Sub
で良いのではないか。他のイベントでも良いかも。
Private Sub Workbook_Open()
End Subなど。
上記のように、フォームを通さずともできるが、ニーズによる。
シートに貼り付ける場合は、エクセルVBAの場合はRowSourceではなく、上記のように、エクセルらしく、セルの値と関連付けるようになっている。

投稿日時 - 2011-03-18 21:34:53

お礼

.ListFillRange を使うのですね!
出来ました。
ありがとうございました。

投稿日時 - 2011-03-18 23:14:25

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

方法1:
シート上に配置したリストボックスを右クリックしてプロパティを開始し,
ListFillRange欄に Sheet1!A1:A3 を設定します。
こういう使い方を「デザイン時」の設定と言います。


方法2:
挿入メニューの名前の定義で
名前 myRng
参照範囲 =OFFSET(Sheet1!$A$1,0,NOW()*0,COUNTA(Sheet1!$A:$A),1)
と登録します

リストボックスのプロパティの
ListFillRange欄に myRng
を設定します
方法1と違い,元のデータの範囲を可変に取ることができます。


方法3:
敢えてマクロで「実行時に」初期化したいなら,Workbook_Openイベントを使用してみるのが良いでしょう。

ThisWorkbookシートに
private sub workbook_Open()
worksheets("シート名").listbox1.listfillrange = "Sheet1!A1:A5"
end sub

ブックを保存し,閉じて開き直すと初期化します。

投稿日時 - 2011-03-18 22:54:09

お礼

たくさんの方法があるのですね
.ListFillRange を使うのは初めて知りました。
ありがとうございました。

投稿日時 - 2011-03-18 23:15:28

あなたにオススメの質問