セルに名前を付けてリストボックスにセットする
 リストボックスの内容として使いたいセル範囲に名前を付けます。
その名前を使ってリストボックスにセル内容を表示します。
 
 そして、リストボックスで選択されたものをテキストボックスに表示し、
テキストボックスに移動します。

 リストボックスの選択方法は、選択後ダブルクリックで確定と、選択後
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

End Sub




戻る


Excel Word Access VBA! モーグ