【VBA】多くの人が悩むFor Eachステートメントについて分かりやすく丁寧に解説します

Sdílet
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....

Komentáře •