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