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

このQ&Aのポイント
  • エクセル2003のシート上にリストボックスを設置し、値を表示する方法について教えてください。
  • フォーム上のリストボックスではUserForm_Initialize()イベントを使用して値を指定できますが、シート上ではどのイベントプロシージャーにコードを書けばよいのでしょうか?
  • シートモジュールにPrivate Sub ListBox1_Click()としても何も起こらないため、ファイルを開いた時からリストボックスに値を表示させる方法を教えてください。
回答を見る
  • ベストアンサー

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

エクセル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 としても何も起こりません。 できればファイルを開いた時からリストボックスに値を表示させるようにしたいです。 ご教授よろしくお願い致します。

この投稿のマルチメディアは削除されているためご覧いただけません。
  • bmgjtu
  • お礼率99% (478/479)

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

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ではなく、上記のように、エクセルらしく、セルの値と関連付けるようになっている。

bmgjtu
質問者

お礼

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

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.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 ブックを保存し,閉じて開き直すと初期化します。

bmgjtu
質問者

お礼

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

関連するQ&A

  • フォームのリストボックスに値を表示させたい

    VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。

  • エクセル リストボックスにセルの値を表示したい

    Sheet1に A1 a A2 i A3 u と入力されています。 フォームのリストボックスにこの3つのセルを表示したいのですが Private Sub UserForm_Initialize() UserForm1.ListBox1.ControlSource = Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 3)) End Sub ではうまく行きません。 デバッグしてもなにも引っかからないのですが 実行すると 「実行時エラー13 型が一致しません」 となります。 「ControlSource」を「RowSource」に変えても同じでした。 ※列が移動するため列番号を変数で取得したいのでCellsを使用しています。 ご教授よろしくお願いします。

  • リストボックスで選択した項目を削除するには

    Excel2003を使用しています。 ユーザフォームのリストボックスには"Sheet1!A1:C10"が表示されるようになっています。 Private Sub UserForm_Initialize()  UserForm1.ListBox1.ColumnCount = 3  UserForm1.ListBox1.RowSource = "Sheet1!A1:C10" End Sub たとえばリストボックス上で3行目(A3:C3)を選択して、削除ボタンをクリックすれば選択された値が表示から消えて、セル上の値も削除されるようにしたいのです。 できれば削除されると同時に4行目(A4:C4)以降の値が上にスライドされるようにできればいいのですが、まだまだ理解できない部分が多くて自分では解決できませんでした。 ご存知の方がいらっしゃいましたらご教授頂けないでしょうか。 宜しくお願い致します。

  • リストボックスにシートの値を表示させたいのですが

    vbaでシートのリストボックスにシートの値を表示させたいのですが シートモジュールでこのコードを実行しようとしてもエラーになり出来ないのですが どこが間違ってますか? Sub リストボックスに値を表示する() Me.ListBox1.RowSource = Range("c1:c10").Value End Sub Me.ListBox1.Value = Range("c1:c10").Value もエラーになりました。

  • リストボックスのリストを削除する

    リストボックスのリストを削除する アドバイスをお願いします。 下の構文でユーザーフォーム内のリストボックスに リストを表示させるようにしました。 Private Sub UserForm_Initialize()  With ListBox1 .RowSource = "データー!B3:B33" End With End Sub 表示されたリスト内で、不要になったリストをコマンドボタンの押下したときに データーシートのB3からB33の中から選択したリストと同じデーターを 探して削除する方法をお教えください。

  • オプションボタンとリストボックスの連動

    下記コードを作りましたが、全く反応がありません。 どこが悪いのか、指摘いただけませんでしょうか? よろしくお願いします。 ・オプションボタン1を選択=リストシートのB列をリストボックスへ表示 ・オプションボタン2を選択=リストシートのC列をリストボックスへ表示 ・リストボックスから一項目を選択、値を入力シートへ入力 Private Sub UserForm2_Initialize() If OptionButton1.Value = True Then With UserForm2 .ListBox1.RowSource = "リスト!B3:B" & lastRow End With End If If OptionButton2.Value = True Then With UserForm2 .ListBox1.RowSource = "リスト!C3:C" & lastRow End With End If End Sub Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _ ByVal X As Single, ByVal Y As Single) Worksheets("入力!").ActiveCell.Value = ListBox1.Value End Sub 以上

  • リストボックス内の表示について

    マクロ初心者です。(エクセル2003使用_ユーザーフォーム) リストボックスを作成しました。 Sheet1でA5からAEまでを選択することはできたのですが、 下記コードでは、リストボックス内の表示がA,B,Cの値がでてしまいます。自分は、G,H,Iの値を表示したいのですが、どこが違うのか教えてください。 (Sheet1のデータ) A  B  C ・・・・G  H  I ・・・・AE 犬  猫  鳥     馬  羊  蝶     猿 (コード) Private Sub UserForm_Initialize() With ListBox1 .ColumnWidths = "45;18;90" .ColumnCount = 3 .RowSource = "Sheet1!A5:AE" & Worksheets("Sheet1").Range("AE" & Rows.Count).End(xlUp).Row End With End Sub ↑これだと、リストボックスには<犬 猫 鳥>となってしまいます。 <馬 羊 蝶>にするやり方を教えてください。 よろしくお願いいたします。

  • シート名を変更すると、そのシートのデータがリストボックスに表示されない

    Vista SP1 ExcelXPでマクロ作成中の超初心者です。 シートA会社のセルを、右クリックすると、ユーザーフォームが現れ、その中のリストボックスにsheet1の データが表示されます。sheet2 sheet3 も同様に、正常にリストボックスが表示できています。 ところが、シートの名前 「sheet1」を、「関係データ1」に変更すると フォームにリストボックスが表示されますが、中身は表示されません。 シート名を変更しても、右クリックでリストが正常に表示できるようにするにはどうすればよろしいでしょうか。             1)ブックには,13枚のシートがあります。  1)シート名が  A会社からJ会社           sheet1 sheet2 sheet3 2)会社シートにはそれぞれ以下のコードを記入してあります。  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示 If Target.Row > 14 And Target.Row < 45 And Target.Column > 13 And Target.Column < 15 Then UserForm1.Show End If If Target.Row > 14 And Target.Row < 45 And Target.Column > 19 And Target.Column < 21 Then UserForm2.Show End If ユーザーフォームには、次のコードがあります。 Option Explicit Private Sub CommandButton1_Click() 'With ListBox1 'If .ListIndex = -1 Then 'MsgBox "項目を選択してくだい" 'Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) End If End With Unload UserForm1 End Sub ------------------------------------------ Private Sub CommandButton2_Click() Unload UserForm1 End Sub 'Private Sub UserForm_Initialize() 'Me.StartUpPosition = 0 ' Me.Left = 200 ' Me.Top = 100 ' Me.Height = 400 ' Me.Width = 230 'End Sub Private Sub 閉じる_Click() Unload UserForm1 End Sub Private Sub ListBox1_Click() With ListBox1 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) ActiveCell.Offset(0, 7).Value = ListBox1.list(ListBox1.ListIndex, 1) Selection.Offset(0, 7).Select End If End With Unload UserForm1 End Sub -------------------------------------------

  • リストボックスのスクロールバーをマウスで動かしたい

    エクセル2007です。 Sheet1のA列に 1行目から順に 1 2 3 4 5 6 7 8 9 10 といれました。 ユーザーフォームを新規作成し、リストボックスを設置しました。 VBAコードは、 Private Sub UserForm_Initialize() Me.ListBox1.RowSource = "Sheet1!a1:a10" End Sub にしました。 VBE画面でF5を押して、フォームを表示させるとリストボックスにスクロールバーが表示されますが、 フォームをクリックして、マウスホイールでぐりぐりしても、リストは動きません。 画像のように、4にカーソルをあて、グリグリしてもダメです。 どうしたら動くようになるのでしょうか?

  • リストボックス

    すいません以下の処理に困っております。 リストボックスで値を取得して他のリストボックスにその値を 出力したいのですがまったくできません。 <例> リストボックス1 a b c リストボックス2(上で選択した値を出力) a ちなみに構文は、 ------------------------------------------------------------ Private Sub btn選択_Click() ListBox2.Text = ListBox1.Text 'ListBox1.ListIndex + 1 & ": " & ListBox1.Text End Sub Private Sub CommandButton1_Click() End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub UserForm_Initialize() With ListBox1 .AddItem "スケジューラ" .AddItem "データ変換" .AddItem "DWH Server" .AddItem "PPP Server" .AddItem "ファイヤーウォール" .AddItem "暗号オプション" End With End Sub ---------------------------------------------------- 初心者でまったくできません。 御教授をお願いします。

専門家に質問してみよう