【初心者向け】Excel VBA(マクロ)繰り返し処理入門、Do 文の使い方

シェアする

The following two tabs change content below.

松井 元(まつい はじめ)

静岡県三島市の松井会計事務所に勤務する理系税理士。 文理両方のスキルの融合を考えており、このブログは以下を中心に更新している。
●税金・会計に関すること
●IT(Excel、VBAなど)を使った業務効率化
●自分のこと(考え、私生活)

さらに詳細なプロフィールはこちら
松井会計事務所へのお仕事ご依頼・お問い合わせはこちら
税金・会計の無料メルマガはじめます

どのプログラミング言語であれ、はじめてプログラミングを勉強している方が挫折しやすいのが、繰り返し(ループ)処理です。

同じことを何回も繰り返すというのはプログラミング独特の概念なので、

最初はなかなか分からず慣れるのに時間がかかります。

さて、今日は Excel VBA(マクロ)での繰り返し処理入門ということで、Do 文の使い方についてじっくりと解説します!

こちら↓の記事では同じく繰り返し処理である For 文について解説しています。

For 文と Do 文 合わせて基礎を身に付けて、「繰り返し処理の壁」を突破して頂きたいと思います。

それでは行ってみましょう!

レクタングル大 広告

1.繰り返し処理の題材

Do 文を使うための題材を用意します。

次のように、最初セル A1 ~ A10 に 10、20、30、、、、と数字が入力してあるものとします。

題材

VBA を使って、セル B1 ~ B10 に次のように数字を並べたいと思います。

アウトプット

さて、さっそくはじめたいと思います。

Alt + F11 を押してVBE(エディタ)を開いてから、Alt → I →  M を押して標準モジュールを挿入しましょう!

VBE(エディタ)f

ここ↑ に VBA コードを書き込んでいきます。

2、Do 文の使い方

さて、上記の題材のとおりに B1 ~ B10 に数字を並べる VBA コードは以下のようになります↓

プロシージャ名は test としました。

Do 文のルールを覚えましょう。

Do 文は次のように記述して使います。

Do While 条件
  繰り返したい処理
Loop

最初の行に Do を記述し、最後の行を Loop で締めます。

そして、Do と Loop の間に繰り返したい処理を書き込みます。

Do 文を理解するために必要なポイントをあげると以下のようになります↓

ポイント1: Do 文よりも前で変数を指定する
ポイント2: どういう場合に処理を繰り返すか? をはっきりさせる
ポイント3: 繰り返し処理の法則を見つけ出す
ポイント4: 変数を忘れずに増やす

ポイント1: Do 文よりも前で変数を指定する

Do 文を使う場合、繰り返し処理のために変数を使わなければいけません。

そのための変数としてよく使われるのは i、j、k あたりです。

今回は i を使いました。

*はじめての方は、この時点では何をやろうとしているのか訳が分からないかも知れませんが、順番に説明していきますのでお付き合い下さい(^^)

さて、まず Do 文がはじまる前で必ず変数 i を指定しておきます。

i = 1 とします。

変数iの指定

i は必ず 1 にしておかなければならないわけではありません。

ただ、1 にしておいた方が色々と使いやすいんです。

とりあえず、最初に変数 i = 1 とすると覚えてしまって下さい!

そして、この i が後々繰り返し処理をするごとに 1つずつ増えていきます(2、3、4、5、、、、と)。

ポイント2: どういう場合に処理を繰り返すか? をはっきりさせる

次にどういう場合に処理を繰り返すか? という繰り返し処理の条件をはっきりさせます。

For 文の場合は何回処理を繰り返すか回数を決めますが、Do 文の場合は回数を決めることはできません

繰り返しの条件

さて、どういう場合に処理を繰り返すか? を表しているの上記の赤枠の中になるわけです。

While は日本語にすると「~する間」という意味になります。

While Cells(i, 1) <> “”

で「Cells(i, 1) <> “” である間」ということになるわけですね!

そして、これ↑ が繰り返し処理の条件となります。

「Cells(i, 1) <> “” である間」は処理を繰り返すという意味になります。

Cells(i, 1) は A列(1列目)のセルを表しており、i の値によって行番号が変わってきます。

繰り返す

Cells(i, 1) <> “” というのは、A列が空白ではないことを表します(<> はノットイコールの意味)。

今回、A列をしらべるために i を 1 つずつ増やしていき、A列が空白ではない間は処理を繰り返しています。

なお、先にお話ししましたように Do の行と Loop の行はワンセットで使います。

最初に

Do While Cells(i, 1) <> “”

と記述したら、すぐ後に

Loop

と書いてしまいましょう!

これで最後に Loop と記述することを忘れずにすみますので。

ポイント3: 繰り返し処理の法則を見つけ出す

さて、Do と Loop の間に繰り返したい処理を書いていきます。

Do While Cells(i, 1) <> “”
  繰り返したい処理
Loop

今回の繰り返し処理は以下の赤枠の部分になります。

繰り返し処理

さて、今回繰り返し処理をなぜ上記のようにしているか説明しますね。

今回は B1 ~ B10 に以下のように数字を並べたいわけですね。

5、10、15、20、25、、、、と

B列に並べる"

どのようにすれば i を使ってそれを実現できるか考えます。

最初 A列の数字しかないわけですが、その A列の値 Cells(i, 1) を2分の1すれば良いことが分かりますでしょうか。

以下のように割り算をすることで、B列にA列の値を2分の1した値を表示できます。

Cells(i, 2) = Cells(i, 1) / 2

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録

このように、変数 i をどう使えばやりたいことを達成できるか? 元の題材を見て考えて、法則を見つけ出すようにしましょう!

ポイント4: 変数を忘れずに増やす

さて、上記の繰り返し処理に含まれる以下の部分を忘れないようにしましょう!

i = i + 1

これを記述し忘れると、無限ループになって処理が終わらなくなってしまいます。

って言われてもよく分からないですよね(^^)

順を追って説明します。

まず、i = i + 1 という記述がよく分からないと思います。

左辺が i で右辺が i + 1 って等しくないのに、なぜ =(イコール)なんだろう?

って思いますよね。

この記述の仕方はプログラミング独特のもので、これで i を 1つずつ増やすという意味になるのです。

プログラミングの世界では、左辺の i と右辺の i は別物なのです。

●左辺は 次の i

右辺は 今の i

という意味になるんですね。

i = i + 1 を書きかえると以下のようになります。

i(次の i) = i(今の i) + 1

ですので、i = i + 1 の意味するところは「次の i 今の i に 1足したもの

言い換えれば、i を 1つずつ増やしていくということになるのです。

i = 1 からはじまって i が1つずつ増えていくと Cells(i,1) で表される A列を1行目から順番に見ていくことになるわけです。

そして空白になるまで、1行1行処理を繰り返していきます。

1行ずつ処理

さて、i = i + 1 の記述がもしなかった場合、i は最初に指定した 1 のままということになりますよね。

そうなると、どういう場合に処理を繰り返すか? を表す条件は「While Cells(1, 1) <> “”」となり、Cells(1, 1) が空白でない限り処理を繰り返すという意味になってしまうんですね。

Cells(1, 1) すなわちセル「A1」には 10 が入っているので空白ではありません。

ずっと、Cells(1, 1) だけを見て処理を永遠に繰り返すことになってしまいます。無限ループです。

こうなってしまったら Ctrl + Alt + Delete でタスクマネージャーを起動して強制終了するほか無くなってしまいます(><)

Do と Loop の間に i = i + 1 の記述を忘れないようにしましょう!

3、まとめ

Do 文の基礎的な使い方について説明しました。

For 文もあわせて参考にして下さい↓

なお、今回は「Do While」と書くことで「~の間」処理を繰り返すというコードにしましたが

While 以外にも Until(~になるまで)を使うこともできます。

これについては今回は詳しくは説明しません。

While の方がピンとくると思うので、まずは基礎の基礎として「Do While」と記述する場合を覚えて下さい。

Excel VBA についてのメニューも提供させて頂いておりますのでよろしければ ↓

◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン

編集後記

この週末(9/29 ~ 30)は、未開封だったガジェットをいくつか使い始めました。

まずはこれ↓ Logicool 製のトラックボールマウスです。

効率化アイテムとして色んな人が勧めているので使ってみることにしました。

マウスのカーソルの位置を手の動きではなく、親指でボールをコロコロ回して動かすことができるものです。

トラックボールマウス

とりあえず画面の左端から右端に一瞬でカーソルを移動できるところは便利かなと思いますね。

そしてこれ↓ ELECOM 製の USB ハブです。

今の PC Surface Laptop は USB ポートが1つしかないのでたまに不便でした。これでUSB ポートを4つに増やすことができました。

USBHUB

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録
税理士試験まとめ、税法論文の書き方

————————————————

税理士試験についてのまとめはこちらです!

税法2科目免除大学院についてのまとめはこちらです!

kindle電子書籍を出版しました。

税理士試験の税法2科目免除のために大学院で税法論文(修士論文)を書いた経験を元に、大学院生としての目線から税法論文の書き方を体系化した書籍です↓

大学院での税法論文の書き方

本書籍の内容についてはこちらの記事をご確認下さい。

お問い合わせ・フォローボタン

———————————

よろしければフォロー下さい↓

Twitter フォローボタン:

Feedly フォローボタン:
follow us in feedly

Facebookページ:
*いいね!を押して頂くと更新情報が届きます。

レクタングル大 広告
レクタングル大 広告
関連コンテンツ



シェアする

フォローする