例文を使って繰り返し業務を時短

【マクロ・VBA】範囲を指定して表をループ処理する

エクセル、マクロ、VBAで表を指定してループ処理する VBA

インプットボックスで選択範囲を指定して表をループ処理

このVBAマクロは、範囲を選択するInputBoxを表示し、ユーザーが選択した範囲に含まれる各セルに”〇”という文字列を入力するループ処理を実行するものです。

  • ユーザーにセル範囲を選択してもらい、その範囲内のすべてのセルに”〇”を書き込む。
  • 選択された範囲内のすべてのセルに対してループ処理を行います。ループ処理中に、現在処理されているセルに対して、"〇"の値が設定されます。
Sub インプットボックス_範囲を選択してループ処理()

Dim selectedRange As Range, rng As Range
On Error GoTo myError

Set selectedRange = Application.InputBox("セル範囲を選択", Type:=8)

'ActiveSheet.Range("A1").CurrentRegion.Select

'選択セル範囲に対してループ処理 順番 列→行 左から右へ
For Each rng In selectedRange
    rng.Value = "〇"
Next

myError:
MsgBox "完了"
End Sub

解説

  • 変数selectedRangeとrngを宣言しています。selectedRangeは、ユーザーが選択したセル範囲を格納するためのRange型の変数であり、rngは、ループ処理中に使用されるセル範囲内の各セルを格納するためのRange型の変数です。
  • On Error GoTo myError
    • この行は、エラー処理を設定するための行です。エラーが発生した場合は、myErrorというラベルにジャンプし、エラーが発生しなかった場合は、そのまま実行を続けます。
  • InputBoxを表示して、ユーザーが選択したセル範囲をselectedRange変数に代入しています。Type:=8は、InputBoxの戻り値がRange型であることを示しています。
  • For Each文を使用して、選択されたセル範囲内の各セルに対してループ処理を実行します。ループ内では、各セルに”〇”という文字列が入力されます。
  • エラー処理のラベルである「myError」が指定された場合にジャンプする先です。エラーが発生した場合には、「完了」というメッセージボックスを表示して処理を終了します。エラーが発生しなかった場合でも、メッセージボックスが表示されます。

最終行まで範囲指定してループ処理

このVBAコードは、表の範囲を選択し、選択した範囲に対してループ処理を行うものです。

Sub 表の選択してループ処理()

Dim my_array As Variant
Dim s_row, s_col As Long
Dim max_row, max_col As Long

s_row = 2  
s_col = 1  

max_row = ThisWorkbook.ActiveSheet.Cells(Rows.Count, s_col).End(xlUp).Row
max_col = ThisWorkbook.ActiveSheet.Cells(s_row, Columns.Count).End(xlToLeft).Column

Set my_array = Range(Cells(s_row, s_col), Cells(max_row, max_col))

my_array.Select

'選択セル範囲に対してループ処理 順番 列→行 左から右へ
For Each rng In my_array
    rng.Value = "〇"
Next

myError:
MsgBox "完了"
End Sub

解説

  • my_arrayは表の範囲を保持するための変数で、s_rows_colは範囲の始点を示します。max_rowmax_colは、範囲の終点を示します。変数の型はLongと宣言されています。
  • 次に、始点と終点を設定して、my_arrayに表の範囲をセットしています。Range関数を使用して、始点と終点を指定しています。この範囲はmy_arrayに代入され、my_arrayが表の範囲を保持することになります。
  • その後、my_array.Selectによって、my_arrayに指定された範囲が選択されます。
  • 最後に、For Eachループを使用して、選択された範囲に対してループ処理を行います。ループは列から始まり、行方向に進んでいます。各セルに対して、rng.Value = "〇"によって”〇”が設定されます。
  • 最後に、エラー処理が行われ、MsgBox関数によって完了メッセージが表示されます。

コメント

タイトルとURLをコピーしました