ExcelVBA(マクロ)で範囲に同じ文字を追加する、計算をする方法/For each in文の使い方

pigeons IT

たとえば範囲全てに同じ文字を追加したい場合など、通常のExcel操作ではかなり手間がかかります。これをマクロでやってしまおうという記事です。
For nextの追加的な内容となります。

Advertisements

For each文の使い方

範囲に繰り返し同じ操作をする
for each 変数 in 対象
(処理)
next
foreach1
さて、この4つの頭に㈱をつけてみたいと思います。
foreach2
式としてはこうなります。いきなり全部書きましたが、上から解説します。
Dim kabu
まずDimは変数の作成を意味します(今回はOption Explicitを省略してますが、本当は付けます。詳しくはリンク先参照)。
変数というのは、数式でいうxとかyとかアレです。処理的にセルの値を一回変数kabuに入れて、それに文字をくっつけてセルに代入する、というような処理を行う前準備です。変数名は別にkabuである必要はないです。
For Each kabu In Range("A1:A4")
二行目。For eachで繰り返し実行する旨宣言しています。
For Each kabu In Range("A1:A4")
A1~A4の中(in)の「kabu」に対して行うよ、と言ってますが、言い換えればA1~A4の各セルを一回ずつ変数kabuに代入していき、それが終わるまで処理を繰り返すという意味になります。
kabu.Value = "㈱" & kabu.Value
三行目。Valueを使ってkabuの値に何かを代入する旨命令しています。
kabu.Value = "㈱" & kabu.Value
代入する値は、㈱とkabuの値をくっつけたものです。数学の式としてはおかしいですが、マクロの式としてはOKです。
Next
Nextまで行くと、まだ行える処理が残っている場合、For eachへ戻ります。
foreach3
実行するとこうなります。よくわからない人は、とりあえずコピペして範囲と値を差し替えてくれれば動きます。
Dim kabu
For Each kabu In Range("A1:A4")
kabu.Value = "㈱" & kabu.Value
Next

もう一個やってみましょう。

foreach4
今度はB1~B4の値に、それぞれ5を足してみたいと思います。
foreach5
さっきとほとんど同じですが、範囲と、変数に数字を足す処理になっています。
Dim kabu
For Each kabu In Range("B1:B4")
kabu.Value = kabu.Value + 5
Next
foreach6
実行すると、範囲内の数値にそれぞれ5が足されました。

For each in文を使って範囲に同じ処理をする方法については以上です。

やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント