教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA プログラミング】(関数50)LBound・UBound関数のプログラミング例を教えて!(一次元配列)

f:id:m_kbou:20220104135254p:plain

LBound関数及びUBound関数を使用したプログラミング例を紹介します。

 

 

例題

都道府県欄(A列)に都道府県名が記述されています。抽出条件(B2セル)には「道・都・府・県」が選択できる様にプルダウンリストをセットします。この抽出条件からいずれかを選択し、<実行>ボタンをクリックします。その結果、抽出条件で選択した内容を含む都道府県名を抽出し、結果欄(C列)に表示します。

[実行前]:

f:id:m_kbou:20220104135217p:plain

[実行後]:

f:id:m_kbou:20220104135228p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

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列にセットします。

との内容になります。

f:id:m_kbou:20220104135240p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。また、ボタンにプログラムを割り当てるにはこちらを参考にして下さい。

 

ダウンロード

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com