この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
For~Nextの間にEachを挟んで繰り返し作業を記述する構文について記載します。
関連記事 Do~Loopを使って繰り返し作業を自動化するExcelマクロの作成
関連記事 For~Nextを使って繰り返し作業を自動化するExcelマクロの作成
For~Each~Nextの基本
For~Each~Nextの基本的な記述方法は次のとおりです。
[aside type=”boader”] For Each 変数 In グループ名
(繰り返しの処理を記述)
Next[/aside]
For~Each~Nextの構文は、指定したグループ名の中で記述された処理を繰り返すと終了となります。
例えば次のとおりです。
変数wsAll(型はWorksheet)に開いているワークブックのワークシートを代入し、そのワークシートの名称を表示するという記述になります。
Excelで左から「テストシート」、「テストシート2」、「セルの指定」・・・というシート名称が設定されているファイルで実行すると次のとおりです。
一番左の「テストシート」から順に名称が表示されていきます。作成されているシート名称をすべて表示したらプログラムは終了します。
いろいろな条件
① 1つの列をグループ名に指定する場合
For~Nextの記事で取り上げた次のファイルのA列の数値をC列に転記するという処理をFor~Each~Nextを使って記述してみます。
A列の数値をC列に転記する記述は、「A列の数値を行数を1つずつ増加しながら、同じ行のC列に転記する」というプログラムになれば良いので、次のように記述しました。
変数varGa(型はVariant)を定義します。(※1)
グループ名はRangeとCellsを使用してA列の2行目から10行目を指定しました。上記の赤い枠囲み。
varGaに代入したA列の数値をC列に転記する記述の後、
C列の転記する行数を1つ増やす必要があるので、その記述もしました。上記の緑色の枠囲み。
これを実行すると次のとおり。
(※1)この例では、行数の指定(整数の値)を代入するので、変数の型はLongを指定したいところですが、Long型の変数をFor~Each~Nextの構文で使用し、処理を実行すると次のようなエラーメッセージが表示されて処理が止まってしまいます。
Variant型かWorkbookやWorksheetのようなオブジェクト型を使用する必要があります。
② 1つの行をグループ名に指定する場合
上記①で記述したグループ名では、A列を上から順に処理していきますが、1つの行を指定するとどうなるでしょうか?
次のようなシートを用意しました。
1行目の数値を3行目に転記する処理を記述してみます。
グループ名は、RangeとCellsを使用して行数を「1」に固定し、列数をB列~E列を表す数字の「2」と「5」を使用して指定しました。
変数lonXa(型はLong)は、列数を管理するための変数です。
上記の記述を実行すると次のとおりです。
1つの列の中で、左から右へと順に処理が実行されます。
数値の「6」が表示されているのは、E列(左から5番目)の転記処理の後に、列数をMsgBoxで表示する記述になっているからです。
E列(5番目)に1を加えた数値の「6」が表示されます。
③ グループ名に複数の行と列を指定する
グループ名に複数の行と列を指定するとどうなるでしょうか?
①の例の記述を次のように変更してみました。
cellsのなかの数字の記述をピンク色の枠囲みのように変更しました。
A2セルからB10セル、つまり2つの列と9つの行をグループ名に指定してあります。これを実行すると次のようになります。
複数の列と行を指定した場合は、A2→B2→A3→B3・・・と処理が進むことになります。
A列とB列をそれぞれ、C列とD列に転記する方法を考えてみました。
上記のとおりIf~Then構文を使い、「C列のセルが空白(””)の場合は、C列にデータを転記し(上記の赤い枠囲み部分)、空白でなければ、D列に転記し、転記後、変数lonYaに1を加える(上記の緑色の枠囲み部分)」という記述にしました。
これを実行すると次のとおりです。
まとめ
私は、For~Each~Next構文は、基本のところの例のように複数のワークシートを操作する時に使うことが多く、ワークシート名称をListBoxに表示するような場合は便利なので、後日、記事にしてみたいと思います。
■□◆◇ 編集後記 ◇◆□■
クライアントから何を聞き出すか、どのように質問するかというヒアリングのスキルについて、よく考えています。
「税務代理」という本人に代わって申告等の行為をしているので、税務にかかわるすべての事情を把握しておく必要があります。
しかし、あまり質問の方法が良くないと、税務に直接関係ない話までを知ってしまうことになります。そのようなときは、大変申し訳ない気持ちになります。
年末調整の時期になると、所得税の計算のために、家庭の事情を確認しなければならず、扶養控除等の申告書の記載内容等から事情を推察し、変更等の確認に漏れがないように気を付けています。
配偶者や子供の名前が違っているケースや生年月日が前年の扶養控除等申告書と比較して、変わっている場合があります。多くは、ケアレスミス(書き間違え)ですが、質問する時はちょっとドキドキします。