●詳細●
リストボックスの内容として使いたいセル範囲に名前を付けます。その名前を使ってリストボックスにセル内容を表示します。
そして、リストボックスで選択されたものをテキストボックスに表示し、テキストボックスに移動します。リストボックスの選択方法は、選択後ダブルクリックで確定と、選択後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
- A列の最終データが入力されているセルに移動します。データが無い場合は”A1”がSelectされます。
”65536”はExcel97のワークシートの最終行です。
- 最終データ(セル)のアドレスを取得します。
- リストボックス用データの範囲を選択します。
- セルに名前を付けます。
- リストボックスに”リスト内容”をセットします。
----------------------------------------------------------
*選択後ダブルクリックで確定テキストボックスへ移動
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