ヒガサラblog

サラリーマン向けに、仕事を効率良く進めていくための方法についてご紹介しています。プログラミングから対人スキルまでを幅広く掲載中。

ヒガサラblog

【VBA】スキル紹介~Do Loop & For Nextでの繰り返し処理~

f:id:yshgs_elec:20200525094420j:plain

「普段のエクセル業務で同じ作業をなんども繰り返している。」

「エクセル業務を自動化して効率的に働きたい。」

 

この記事ではこんな悩みを解決します。

 

エクセルにはマクロと呼ばれる作業を自動実行してくれる機能が備わっています。

※マクロの使い方については以下の記事をご覧ください。

www.higashisalary.com

 

そのマクロ機能の中には、単純作業を繰り返し行ってくれる機能も備わっています。

 

繰り返し実行を行う上でよく使われるのが、以下の二つです。
[For Next]

[Do Loop]

まずはこの二つの違いについてご紹介します。

 

For Next:繰り返し回数があらかじめ決められている状態で実行する。
Do loop :何回繰り返すかは処理内容を監視しながら決めることができる。

 

この記事ではこの二つの繰り返し処理の実行方法をご紹介します。

 

 

早速ですが、実際に具体例を見てみましょう。

以下のマクロの概要は
①For NextをつかってA列の1~10行目まで順番に1,2,3・・・10と入れていく
②Do loop を使ってA列を1行目から探索して空欄になるまでB列に1,2,3・・・と入れていく
というシンプルなものです。

 

f:id:yshgs_elec:20200316221044p:plain

実際のプログラムも記載しておきます。

 

Sub For_and_Do()
Dim i, j As Integer
For i = 1 to 10
Cells( i ,1 )= i
Next
j=1
Do until Cells( j ,1 )  =""
Cells( j , 2) =j
j= j+1
Loop
End Sub()

 

 

以下が実際の処理結果です。
A列、B列ともにまったく同じ内容が記載されていますが、処理内容は異なっています。

f:id:yshgs_elec:20200316221124p:plain

A列では、あらかじめ繰り返し作業の回数を指定している(For i = 1 to 10)のに対して、

B列では、A列が空欄になる行まで繰り返せ(Do until Cells( j ,1 )  ="")という指示を出しています。

 

もう少しわかりやすくするために、先ほどのプログラムの

Do until Cells( j ,1 )  ="" を

Do until Cells( j ,1 )  >6 

 に変更してみましょう。

※変化がわからなくなるので、マクロ実行前にはシートの数字を消しておきましょう。

f:id:yshgs_elec:20200715214451j:plain

 

実際に実行した結果は以下のようになりました。

f:id:yshgs_elec:20200715214633j:plain

 

Do until Cells( j ,1 )  >6 

という記述によって、A列の数字が6よりも大きくなるまで処理を繰り返すようになっています。

 

このようにDo untilという構文を使うことによって、シートの情報をもとに何回繰り返すかを自動で判断してくれます。

 

こういった繰り返し処理を多く行う方は是非使いこなせるようになっておきましょう。

 

今回のスキル紹介は以上です。

それではまた!

 

関連記事

www.higashisalary.com

www.higashisalary.com