LBound関数及びUBound関数を使用したプログラミング例を紹介します。
例題
都道府県別人口・面積一覧(A1セル~C9セル)があります。抽出条件(A12セル)には「道・都・府・県」が選択できる様にプルダウンリストがセットされています。この抽出条件からいずれかを選択し、<実行>ボタンをクリックします。その結果、抽出条件で選択した内容が含まれる都道府県データを抽出し、結果欄(15行目以降のA列~C列)に表示します。
[実行前]:
[実行後]:
プログラミング
プログラミングは以下の通りとなります。
[記述例]:
Option Base 0
Sub サンプル()
'↓処理①
Dim 二次元配列(7, 2) As Variant
Dim 行 As Long
Dim 列 As Long
Dim w行 As Long
'↓処理②
If (Trim(Range("A12")) = "") Then
MsgBox "抽出条件を選択して下さい。", 16, "メッセージ"
Exit Sub
End If
'↓処理③
Range("A15:C30").ClearContents
'↓処理④
w行 = 0
For 行 = 2 To 9
If (Right(Range("A" & 行), 1) = Trim(Range("A12"))) Then
For 列 = 1 To 3
二次元配列(w行, 列 - 1) = Cells(行, 列)
Next
w行 = w行 + 1
End If
Next
'↓処理⑤
For 行 = LBound(二次元配列, 1) To UBound(二次元配列, 1)
For 列 = LBound(二次元配列, 2) To UBound(二次元配列, 2)
Cells(行 + 15, 列 + 1) = 二次元配列(行, 列)
Next
Next
End Sub
処理①:変数定義
変数を定義します。
処理②:抽出条件の選択
A12セルの抽出条件が選択されている事を確認します。選択されていない場合は、”抽出条件を選択して下さい。”をMsgBoxで表示し、処理を中止します。
処理③:結果欄クリア
A列の15行目~C列の30行目までをクリアします。
処理④:都道府県別人口・面積データを二次元配列にセット
For~Next文を使用した2行目~9行目までの都道府県名(A列)・人口(B列)・面積(C列)のデータを変数:二次元配列にセットします。この時、IF文を使用してA12セルで選択した抽出条件を含む都道府県データのみをセットします。
処理⑤:結果欄に抽出データをセット
LBound関数及びUBound関数を使用し、変数:二次元配列の行に対する下限値~上限値と列に対する下限値~上限値までを各々For~Next文でループさせます。ループ処理の中では上記の処理④で抽出したデータを結果欄(15行目以降のA列~C列)にセットします。
との内容になります。
ダウンロード
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。