For Each 可視セルにループ処理をするマクロ
を示す。
■Excel-VBA For Each 可視セルにループ処理をするマクロ
Sub sample29() Dim MR As Long Dim MC As Long MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列 Cells(1, 1).AutoFilter Field:=15, Criteria1:=Array("新方式") For Each c In Range(Cells(2, MC + 1), Cells(MR, MC + 1)).SpecialCells(xlCellTypeVisible) X = Cells(c.Row, 8) + 3 Cells(c.Row, MC + 1) = X Next c End Sub※[2.~3.] 変数宣言。
※[4.~5.] 最終行数、最終列数取得。
※[7.] 15列目(O列)を「新方式」でフィルタ抽出。
※[9.] c = 可視セルの範囲、でループ処理。
※[10.] 8列目(H列)セルの値に+3してXに格納。
※[11.] Xの値を最終列の次列に格納。
※[12.] 次セルにうつる。全セル処理でループ終了。
■マクロ実行対象
「部品データ_191128.xlsx」の「部品表」シート。8列目(H列)。■マクロ実行結果
実行すると、20列目(T列)可視セルに8列目(H列)セル値+3がループ処理で格納される。
■あとがき
今回はExcel VBAマクロ。For Each 可視セルにループ処理をするマクロ
を示した。
For Each は指定したセル範囲に対して
処理を実行する場合に使う。
なので範囲に可視セルを指定して
処理することもできる。
LibreOffice Basicで使う場合は
コードの先頭行に
「Option VBASupport 1」を記述する。
Option VBASupport 1
他にループはFor To Nextなどもあるので参考。
指定した数値範囲に対して
ループ処理を実行する場合に使う。
■Excel-VBA 配列を使って列の値を足し算・引き算するマクロ
以上。