【VBA】多くの人が悩むFor Eachステートメントについて分かりやすく丁寧に解説します
Vložit
- čas přidán 7. 09. 2024
- VBAには繰り返しの命令(ステートメント)が3つ(本当は4つ)あります。ひとつは回数による繰り返すのFor Nextステートメント。次に、条件による繰り返しのDo Loopステートメント。そして3つめがこのFor Eachステートメントです。これが分からないという方がとても多いです。なぜ分からないのか。その理由はさまざまですが、中でも「オブジェクト変数を使わなければならない」というのがネックになっているようです。今回の動画では、そのオブジェクト変数についても解説しています。
【補足】
オブジェクト変数の解説、ちょっと分かりにくかったかもしれません。
6:26 で、セルをオブジェクト変数Cに入れていますが、
これは「セルA1とセルB2」という"2つのセル"を入れているのではありません。
まず「セルA1」ひとつだけを変数Cに入れると、変数Cを使ってセルA1を操作できますよと。
続いて、今度は変数Cに「セルB2」をひとつだけ入れると、同じ書き方(C.アドレスなど)で
「セルB2」を操作できるという意味です。
また、8:30 あたりで次の解説をしています。
Dim C As Range
Set C = Range("A1")
これは、オブジェクト変数を宣言するときは、オブジェクトの名前を型に指定する
ということがポイントです。ちなみに
セルを入れる → As Range
ワークシートを入れる → As Worksheet
ブックを入れる → As Workbook
などのように宣言します。今回はセルですから「As Range」です。
そして次の
Set C = Range("A1")
ですが、これは、オブジェクト変数を、For Each"ではない"ところで
単体で使用する場合の書き方です。変数CにセルA1を入れるときは、こう書きます。
その後、For Eachの解説では、この「Set」が出てきません。
本来、オブジェクト変数に何かを入れるときは、必ずSetをつけなければいけませんが、
For Eachは、それを内部でやってくれますので、For Each内でSetは書きません。
このへんも、多くの方が悩むポイントだと思います。
「For Eachの解説」には、その前に「オブジェクト変数の解説」が必要なので、
今回は2つのことを解説しましたが、オブジェクト変数に関しては、
今回の動画では触れていない、もう一つの使い方があります。それが実務でよく出てきます。
そのへんの話は、いずれ違う動画で解説するつもりです。
解説では「セルを1つずつ操作する」例を示していますが、最後の実例では
セル操作のコードをお見せしていません。
なので、下記リンクからダウンロードできるサンプルブックに、
「選択した複数のセルをひとつずつ操作する例」を書いておきます。
それを実行して、イメージしてください。
ちょっと、この動画に関しては悔いが残ります。
せっかく投稿したので、このまま残しておきますが、スッキリしなかった方、すみませんでした。
---
【Webサイト】
officetanaka.net
【動画で解説したサンプルコードやブックのダウンロードなど】
officetanaka.ne...
【Schoo】毎月生放送
schoo.jp/searc...
【書籍】
www.amazon.co....