Windows 10 Pro_x64 + Excel2013_x86 VBA で Worksheet のデータ を ListBox に表示する

Windows 10 Pro_x64 + Excel2013_x86 VBA で Worksheet のデータ を ListBox に表示する

 

Worksheetのデータをフォームの起動時にListBoxにセットする

ループで1行づつデータを取得して、Cellのデーをセットする方法もあるが

対象の領域を Variant の2次元配列にセットしてループで処理する方が良いかなと

※桁数の多いデータを取り込んでListBoxに表示することは無いと思うけど

※DBに登録するときは、1行単位で ひらうかな?

 

・UserFormを1個追加する

・UserForm1の上にListBoxを1個追加する

・UserForm_Initialize で ListBox1 に初期データを追加する

 

対象データは以下の全国一括(KEN_ALL.CSV)より一部抜粋

郵便番号データダウンロード

データの並びは以下に準拠

郵便番号データの説明

1:表示順(追加)

2:全国地方公共団体コード

4:郵便番号(7桁)

9:市区町村名

10:町域名

Option Explicit

Private Sub UserForm_Initialize()
'
    Dim varAry  As Variant
    Dim lngRow  As Long
'
    ListBox1.Clear
'
    ListBox1.ColumnWidths = "30 pt; 30 pt;40 pt;70 pt;70 pt"
    ListBox1.ColumnCount = 5
    '
    '   データは A3:P8 にある
    '
    With ThisWorkbook.Worksheets("ZIPCODE")
        lngRow = .Range("A" & Rows.count).End(xlUp).Row
        varAry = .Range(.Cells(3, 1), .Cells(lngRow, 10))
    End With

    For lngRow = 1 To UBound(varAry)
        ListBox1.AddItem ""
        ListBox1.List(lngRow - 1, 0) = varAry(lngRow, 1)
        ListBox1.List(lngRow - 1, 1) = varAry(lngRow, 2)
        ListBox1.List(lngRow - 1, 2) = varAry(lngRow, 4)
        ListBox1.List(lngRow - 1, 3) = varAry(lngRow, 9)
        ListBox1.List(lngRow - 1, 4) = varAry(lngRow, 10)
    Next
'
End Sub