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