教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA プログラミング】(クリア6)ループによるクリア処理(IF文とDo~Loop文によるクリア)

f:id:m_kbou:20200421080603p:plain

 ループによるクリア処理を実施する方法について説明します。今回はIF文とDo~Loop文を使用したクリア処理について説明します。

 

 

例題

都道府県欄(A列の3行目~8行目セル)に”茨城県”が入力されている場合は対象セルをクリアし、”茨城県”以外が入力されている場合は何もしないプログラミング方法となります。

[実行前]:

A列の3行目~8行目に都道府県名が入力されている。

f:id:m_kbou:20200317074416p:plain

[実行後]:

都道府県欄に”茨城県”が入力されている場合は対象セルがクリアされ、"茨城県"以外が入力されている場合は何もしません。

f:id:m_kbou:20200317074426p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

Sub サンプル()

  Dim 行 As Double

  行 = 3
  Do Until Trim(Range("A" & 行)) = ""
    If (Trim(Range("A" & 行)) = "茨城県") Then
      Range("A" & 行).ClearContents
    End If
    行 = 行 + 1
  Loop

End Sub

最初に変数:行を指定します。

次に変数:行には初期値として3をセットします。

最後にDo~Loop文を使用して条件判断を行いながら変数:行に数字を1づつ足してループさせます。

ループはA列のセルにデータが入力されていない場合に抜ける事とするため、Trim(Range("A" & 行)) = ""と記述します。 Trim関数は文字列前後にスペース文字が入っていた場合に取り除くための指定となります。

このループによりA列の3行目~8行目に入力されている名前を条件判断します。条件判断にはIF文を使用し、入力されたデータが”茨城県”であるか否かの判断をするため、Trim(Range("A" & 行)) = "茨城県"と記述します。

ループ内の処理内容を説明すると、

---------------------------------

最初のループでは変数:行に3がセットされているので、A3セルにデータが入力されているか判定します。A3セルにはデータが入力されているため、A3セルの都道府県名が”茨城県”であるか否かを判断します。A3セルには”北海道”が入力されているため、A3セルはクリアしません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は3+1=4となります。

---------------------------------

次のループでは変数:行に4がセットされているので、A4セルにデータが入力されているか判定します。A4セルにはデータが入力されているため、A4セルの都道府県名が”茨城県”であるか否かを判断します。A4セルには”岩手県”が入力されているため、A4セルはクリアしません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は4+1=5となります。

---------------------------------

次のループでは変数:行に5がセットされているので、A5セルにデータが入力されているか判定します。A5セルにはデータが入力されているため、A5セルの都道府県名が”茨城県”であるか否かを判断します。A5セルには”福島県”が入力されているため、A5セルはクリアしません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は5+1=6となります。

---------------------------------

次のループでは変数:行に6がセットされているので、A6セルにデータが入力されているか判定します。A6セルにはデータが入力されているため、A6セルの都道府県名が”茨城県”であるか否かを判断します。A6セルには”茨城県”が入力されているため、A6セルをクリアします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は6+1=7となります。

---------------------------------

次のループでは変数:行に7がセットされているので、A7セルにデータが入力されているか判定します。A7セルにはデータが入力されているため、A7セルの都道府県名が”茨城県”であるか否かを判断します。A7セルには”大阪府”の名前が入力されているため、A7セルはクリアしません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は7+1=8となります。

---------------------------------

次のループでは変数:行に8がセットされているので、A8セルにデータが入力されているか判定します。A8セルにはデータが入力されているため、A8セルの都道府県名が”茨城県”であるか否かを判断します。A8セルには”沖縄県”が入力されているため、A8セルはクリアしません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は8+1=9となります。

---------------------------------

次のループでは変数:行に9がセットされているので、A9セルにデータが入力されているか判定します。A9セルにはデータが入力されていないため、ループを抜ける事になります。

---------------------------------

との意味になります。

f:id:m_kbou:20210426202355p:plain

 

ダウンロード

上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。

drive.google.com

 

関連プログラム

www.osiete-excelvba.work

www.osiete-excelvba.work