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