目次
目的
Excel VBA で、ワークシートの指定範囲をループして、セルに入力されている値を取得、セルに入力する値を設定したい。
ループするセルの範囲は、アクティブなワークシート、現在のワークシートの A1:A5 で試してみます。
取得
セルに入力されている値を取得する場合は、 Range オブジェクト » Value プロパティを使用するようです。
Excel VBA のコード :
Sub vba_001735_001()
For r = 1 To 5 ' r は row の略です。 1 行目から 5 行目までループします。
Debug.Print Range("A" & r).Value ' A1 , A2 , A3 ... とセルを下っていきます。
Next
End Sub
' https://pulogu.net/blog/020-computer/excel-vba/worksheet-specified-range-loop/
' この URL 記載は、コピーライト的な意味ではなくて、このサンプルはどこのページに載っていたんだったか ? 。となった時の忘れた時のためです。私の場合、数が増えてくるとありますので。実際は End Sub まであれば動きます。
上の VBA のコードの中で、私が自由に変えているところは、以下の背景色を緑色に着色した部分です。その他の文字は、 VBA を組み立てる時の部品として決まっている文字のようです。上のコードの、シングルクオート( ' の記号)から始まる緑色の文字はコメントというもので、コードの中に書くことのできるメモ書きのようなものですので、動作に影響がありません。
Sub vba_001735_001()
For r = 1 To 5
Debug.Print Range("A" & r).Value
Next
End Sub
2 行目の
For r = 1 To 5
の部分で、ループする行の範囲を指定しています。 1 To 5 だと、 1 から 5 まで 1 ずつ増えていきます。 5 To 10 だと、 5 から 10 まで 1 ずつ増えていきます。私の使用しているバージョンの Excel だと 65536 行が最大なので、 65536 超の行番号を指定するとエラーが発生すると思います。 r としているのは、 row (英語で行の意味)の略です。 For と Next の間で、この r のカウントアップされていく数値を利用することができます。
3 行目の
Debug.Print Range("A" & r).Value
の部分で、イミディエイト ウィンドウという、一時的にテキストを出力できる場所に結果を出力しています。この結果は、 Excel を閉じるとなくなってしまいます。 Range("A" & r).Value の部分の "A" を "B" に変えると、 B 列の値が取得できます。私の使用している Excel のバージョンでは、 IV 列が最大なので "IV" まで指定可能です。
イミディエイト ウィンドウに出力した結果は、以下のようになりました。
イミディエイト ウィンドウに出力された結果 :
A
B
C
D
E
設定
セルに入力されている値を、新しい値に変更する場合は、 Range オブジェクト » Value プロパティを設定するようです。 Value プロパティは、値の読み書きができるプロパティのようです。
Excel VBA のコード :
Sub vba_001735_002()
For r = 1 To 5
Range("A" & r).Value = "X" ' X の文字に設定してみました。イコール( = の記号)で設定可能なようです。
Next
End Sub
' https://pulogu.net/blog/020-computer/excel-vba/worksheet-specified-range-loop/
' この URL 記載は、コピーライト的な意味ではなくて、このサンプルはどこのページに載っていたんだったか ? 。となった時の忘れた時のためです。私の場合、数が増えてくるとありますので。実際は End Sub まであれば動きます。
ワークシートがどうなったか、結果を確認してみます。以下の画像のようになりました。 A1:A5 のセルの値が全て X に設定されています。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。