For Eachステートメントの使い方



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

For Eachステートメントの使い方

どうも、takaです、今回は【For Eachステートメントの使い方】ということで、今まで【For~Next】や【Do~Loop】についてご紹介してきましたが、今回の【For Each】は今までとは少使用方法が違います、なので.【For~Next】や【Do~Loop】のような感覚でいると理解がしずらいかもしれません(;´・ω・)

今回は使い方とサンプルを用意しますので参考にしてください(^^♪

 For Eachステートメントの書式

【For Eachステートメント】の書式は以下の通りです。

【For Eachステートメント】は【一つのグループの中身を一つずつ取り出して順番に処理していく】というイメージになります(;^ω^)

この説明だけでは理解がしずらいですよね(;´・ω・)

たとえば↓のようにした場合

これは【Worksheetsコレクション】からワークシートの名前を順番に取り出す コードです。

注意点
【For Eachステートメント】では、取り出した内容を変数に格納します。なので上記のようにWorksheetsを格納する場合は変数の型を【Woksheet 型】か【すべての方に対応できるVariant型】を宣言する必要があります。格納する内容によって変数の宣言を考る必要がありますのでご注意ください(´・ω・)

サンプル

上記の説明だけでは少しわかりにくいと思いますのでいくつかsampleをご紹介します(´・ω・)

↓は【RangeA1:C3】というグループに対して文字列【E-VBA】を記述するコードです。ちなみにこの場合は【A1→B1→C1→A2→B2・・・】という順番で処理されていきます。

下記のサンプルは【range(“A1:D10”)】を先に選択して、選択されている範囲を取得する【Selection】をグループに指定することによって選択されている【range(“A1:D10”)】に文字列を入力するプログラムです。

下記のコードはユーザーフォーム上のコントロールのオブジェクト名をすべて取得してMsgboxに表示するコードです。sampleではCommandButtonに割り振ってあります。

今回は【VBAでRGBと16進数カラーコード変換ツール】のフォーム上に取得ボタンを追加してテストしています。

取得ボタンを押したことによってフォーム上のコントロールをすべて取得しました。処理の順番はおそらくタブオーダーの順番です(;^ω^)

最後に

いかがでしたでしょうか?覚えてしまえば便利な【For Eachステートメント】ですが、ほかの繰り返し処理に比べると考え方が異なるためとっつきにくい印象があります(;´・ω・)

実際私も【For Each】を覚えたのはVBAを初めてからだいぶ後のことでした(笑)

今回の記事で【For Eachステートメント】について多少なりとも理解ができてもらえたらなら幸いです(;^ω^)

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

特別企画!IT企業の実情をIT企業の社長に聞いてみた!

独学者が多いVBAプログラマー「せっかくプログラム言語を覚えたし、IT企業に転職しようかな?でも、IT企業って良いイメージ聞かないし実際はどうなんだ?」という疑問にIT企業の社長に直に聞いてみました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です