リストボックスの内容として使いたいセル範囲に名前を付けます。
その名前を使ってリストボックスにセル内容を表示します。
そして、リストボックスで選択されたものをテキストボックスに表示し、
テキストボックスに移動します。
リストボックスの選択方法は、選択後ダブルクリックで確定と、選択後
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
|