HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > セルに名前を付けてリストボックスにセットする

即効テクニック

セル操作関連のテクニック

セルに名前を付けてリストボックスにセットする

( - )

●詳細●
リストボックスの内容として使いたいセル範囲に名前を付けます。その名前を使ってリストボックスにセル内容を表示します。
そして、リストボックスで選択されたものをテキストボックスに表示し、テキストボックスに移動します。リストボックスの選択方法は、選択後ダブルクリックで確定と、選択後Enterで確定する方法を挙げました。

*サンプルマクロには、・ ブック「Sample.xls」にシート「Sheet1」・ユーザーフォーム(frmSample)にリストボックス(lstSampleテキストボックス(txtSample)が必要です。
*「Sheet1」のA列のセル内容をリストボックスにセットします。

----------------------------------------------------------
Sub Sample()
    Dim CellPos As String
    Workbooks("Sample.xls").Worksheets("Sheet1").Activate
    Range("A65536").End(xlUp).Select←(1)
    CellPos = Selection.Address()←(2)
    Range("A1:"& CellPos).Select ←(3)
    ActiveWorkbook.Names.Add
    Name:="リスト内容", RefersToR1C1:=Selection←(4)
    frmSample.lstSample.RowSource = "[Sample.xls]Sheet1!リスト内容" ←(5)
    frmSample.Show
End Sub

  1. A列の最終データが入力されているセルに移動します。データが無い場合は”A1”がSelectされます。 ”65536”はExcel97のワークシートの最終行です。
  2. 最終データ(セル)のアドレスを取得します。
  3. リストボックス用データの範囲を選択します。
  4. セルに名前を付けます。
  5. リストボックスに”リスト内容”をセットします。
---------------------------------------------------------- *選択後ダブルクリックで確定テキストボックスへ移動 Private Sub lstSample_DblClick(ByVal Cancel As MSForms.ReturnBoolean) txtSample.Value = lstSample.Value & "が選択されました。" Application.SendKeys("{TAB}") End Sub ---------------------------------------------------------- *選択後Enterで確定してテキストボックスへ移動 Private Sub lstSample_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 13 And Not lstSample.Value = "" Then txtSample.Value = lstSample.Value & "が選択されました。" Application.SendKeys("{TAB}") End If