教えて!ExcelVBA!

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

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

       f:id:m_kbou:20200421080519p:plain

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

 

【目次】

 

例題

例題は、<実行>ボタンにVBAマクロが登録されており、ボタンをクリックする事で条件によるクリア処理を実行します。内容は、都道府県欄(A列の3行目~8行目セル)に”茨城県”が入力されている場合は対象セルをクリアし、”茨城県”以外が入力されている場合は何もしないプログラミング方法となります。

[実行前]:

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

f:id:m_kbou:20200317074218p:plain

[実行後]:

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

f:id:m_kbou:20200317074227p:plain

 

プログラミング

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。また、ボタンにプログラム内容を割り当てるには、VBAをボタンに割り当てるを参考にして下さい。

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

Sub サンプル()

    Dim 行 As Double
   
    For 行 = 3 To 8
        If (Trim(Range("A" & 行)) = "茨城県") Then
            Range("A" & 行).ClearContents
        End If
    Next
   
End Sub

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

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

次にFor~Next文を使用して変数:行に3~8までの数値を順次セットしながらループさせます。

このループによりA列の3行目~8行目に入力されている名前を条件判断します。

条件判断にはIF文を使用し、入力されたデータが”茨城県”であるか否かの判断をするため、Trim(Range("A" & 行)) = "茨城県"と記述します。Trim関数は文字列前後にスペース文字が入っていた場合に取り除くための指定となります。

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

「まず最初に変数:行に3がセットされ、A3セルの都道府県名が”茨城県”であるか否かを判断します。A3セルには”北海道”が入力されているため、A3セルはクリアしません。

次に変数:行に4がセットされ、A4セルの名前が”茨城県”であるか否かを判断します。A4セルには”岩手県”が入力されているため、A4セルはクリアしません。

次に変数:行に5がセットされ、A5セルの都道府県名が”茨城県”であるか否かを判断します。A5セルには”福島県”が入力されているため、A5セルはクリアしません。

次に変数:行に6がセットされ、A6セルの都道府県名が”茨城県”であるか否かを判断します。A6セルには”茨城県”が入力されているため、A6セルをクリアします。

次に変数:行に7がセットされ、A7セルの都道府県名が”茨城県”であるか否かを判断します。A7セルには”大阪府”の名前が入力されているため、A7セルはクリアしません。

次に変数:行に8がセットされ、A8セルの都道府県名が”茨城県”であるか否かを判断します。A8セルには”沖縄県”が入力されているため、A8セルはクリアしません。」

との意味になります。

 

ダウンロード

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

1drv.ms

 

関連プログラム

www.osiete-excelvba.work

www.osiete-excelvba.work