Windows 10 Pro_x64 + Excel2013_x86 VBA の ListBox で複数の列を表示する
Windows 10 Pro_x64 + Excel2013_x86 VBA の ListBox で複数の列を表示する
Excel VBA のUserForm上のListBoxに複数列を表示したい時のメモ
普段はデータベースからひらってきたデータを表示することが多いんだけど
最小限必要なコードを張りつけてみる
・UserFormを1個追加する(UserForm2)
・UserForm2の上にListBoxを1個追加する
・UserForm2の上にCommandButtonを3個追加する
・CommandButton1-3をクリックしたときにListBox1に対応するデータを追加する
・ListBox1をダブルクリックしたときに、対象データを表示する
対象データは以下の全国一括(KEN_ALL.CSV)より一部抜粋
サンプルコード
Option Explicit Private Sub CommandButton1_Click() Call SetPostal("01") End Sub Private Sub CommandButton2_Click() Call SetPostal("02") End Sub Private Sub CommandButton3_Click() Call SetPostal("03") End Sub Private Sub SetPostal(ByRef aPrefCode As String) ' ListBox1.Clear ListBox1.ColumnWidths = "30 pt;40 pt;70 pt;100 pt" ListBox1.ColumnCount = 4 ' Select Case aPrefCode Case "01" ListBox1.AddItem "" ListBox1.List(0, 0) = "01101" ListBox1.List(0, 1) = "0640954" ListBox1.List(0, 2) = "札幌市中央区" ListBox1.List(0, 3) = "宮の森四条" ListBox1.AddItem "" ListBox1.List(1, 0) = "01102" ListBox1.List(1, 1) = "0028071" ListBox1.List(1, 2) = "札幌市北区" ListBox1.List(1, 3) = "あいの里一条" Case "02" ListBox1.AddItem "" ListBox1.List(0, 0) = "02201" ListBox1.List(0, 1) = "0301271" ListBox1.List(0, 2) = "青森市" ListBox1.List(0, 3) = "六枚橋" ListBox1.AddItem "" ListBox1.List(1, 0) = "02202" ListBox1.List(1, 1) = "0361516" ListBox1.List(1, 2) = "弘前市" ListBox1.List(1, 3) = "藍内" Case "03" ListBox1.AddItem "" ListBox1.List(0, 0) = "03201" ListBox1.List(0, 1) = "0200886" ListBox1.List(0, 2) = "盛岡市" ListBox1.List(0, 3) = "若園町" ListBox1.AddItem "" ListBox1.List(1, 0) = "03202" ListBox1.List(1, 1) = "0270202" ListBox1.List(1, 2) = "宮古市" ListBox1.List(1, 3) = "赤前" End Select ' End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ' Dim setVal1 As String Dim setVal2 As String Dim setVal3 As String Dim setVal4 As String ' If ListBox1.ListIndex >= 0 Then setVal1 = ListBox1.List(ListBox1.ListIndex, 0) setVal2 = ListBox1.List(ListBox1.ListIndex, 1) setVal3 = ListBox1.List(ListBox1.ListIndex, 2) setVal4 = ListBox1.List(ListBox1.ListIndex, 3) End If ' Debug.Print setVal1, setVal2, setVal3, setVal4 ' End Sub