目次
目的
Excel VBA で、現在のワークシートの指定範囲をループして、セルに入力されている値の取得、セルに入力する新しい値を設定したい。
今回は繰り返し処理の制御構造に、 For Each ... Next ステートメントというものを使用しています。
ループするセルの範囲は、現在のワークシートの A1:A5 で試してみます。
取得
セルに入力されている値を VBA で取得する場合は、 Range オブジェクト » Value プロパティを使用するようです。
Excel VBA のコード :
Sub vba_001770_001() ' 1770 は当投稿の投稿 ID ですので、決まりではありません。
For Each rng In Range("A1:A5") ' rng は Range の略です。
Debug.Print rng.Value ' rng に Range オブジェクトがセットされるので、 Range の Value プロパティを取得できるようです。
Next
End Sub
' https://pulogu.net/blog/020-computer/excel-vba/worksheet-specified-range-loop-use-foreach/
' この URL 記載は、コピーライト的な意味ではなくて、このサンプルはどこのページに載っていたんだったか ? 。となった時の忘れた時のためです。私の場合、数が増えてくるとありますので。実際は End Sub まであれば動きます。
上の VBA のコードの中で、私が自由に変えているところは、以下の背景色を緑色に着色した部分です。その他の文字は、 VBA を組み立てる時の部品として決まっている文字のようです。上のコードの、シングルクオート( ' の記号)から始まる緑色の文字はコメントというもので、コードの中に書くことのできるメモ書きのようなものですので、動作に影響がありません。
Sub vba_001770_001()
For Each rng In Range("A1:A5")
Debug.Print rng.Value
Next
End Sub
2 行目の
For Each rng In Range("A1:A5")
の部分で、ループするセルの範囲を指定しています。 "A1:A5" だと、 A1 から A5 まで順にループします。 "A5:A10" だと、 A5 から A10 までループします。
ループのつど、 rng 変数に Range オブジェクトがセットされていくようです。ローカルウィンドウで確認してみますと、Range の文字があります。ローカルウィンドウは、変数の中身を確認できる便利な情報画面です。
rng 変数( = Range オブジェクト)の中の Value プロパティを見れば、セルに入力されている値を取得することができます。 Value プロパティを見てみましょう。
どうしてか、 Value プロパティがありません。 Value2 プロパティはあるのですが。いままで、 Value プロパティを、と連呼していたのが間違っていたのかもしれません。しかし、 Value プロパティで "A" という値を取得することはできました。この Value プロパティが入っていない理由は、わからないままです。
3 行目の
Debug.Print rng.Value
の部分で、イミディエイト ウィンドウという、一時的にテキストを出力できる場所に結果を出力しています。この結果は、 Excel を閉じるとなくなってしまいます。
イミディエイト ウィンドウに出力した結果は、以下のようになりました。
イミディエイト ウィンドウに出力された結果 :
A
B
C
D
E
設定
セルに入力されている値を、新しい値に変更する場合は、 Range オブジェクト » Value プロパティに新しい値を設定するようです。読み取り専用のプロパティもあるようですが、 Value プロパティは、値の読み書きができるプロパティのようです。
Excel VBA のコード :
Sub vba_001770_002()
For Each rng In Range("A1:A5")
rng.Value = "X" '新しい値として X を設定しました。
Next
End Sub
' https://pulogu.net/blog/020-computer/excel-vba/worksheet-specified-range-loop-use-foreach/
' この URL 記載は、コピーライト的な意味ではなくて、このサンプルはどこのページに載っていたんだったか ? 。となった時の忘れた時のためです。私の場合、数が増えてくるとありますので。実際は End Sub まであれば動きます。
ワークシートの結果を確認してみると、以下の画像のようになりました。 A1:A5 の値が全て X に変更されています。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。