🐈

VBAマクロでセルの値読み取りとfor文とif文を組み合わせよう

に公開

はじめに

for文とif文とセルの値読み取りを組み合わせることでよりできることが増えます。
僕も実務でよく使う組み合わせです。


1章 VBAマクロでセルの値読み取りとfor文とif文を組み合わせるとどんないいことがあるか

VBAマクロで「セルの値の読み取り」「If文」「For文」の3つを組み合わせると、エクセルの作業を非常に賢く、効率よく自動化できるようになります。この3つは、マクロの中でも特に基本でありながら強力な組み合わせです。
まず、セルの値の読み取りによって、エクセルの中のデータをマクロが確認できるようになります。そして、For文を使えば、たくさんのセルを一つずつ順番にチェックしたり、繰り返し同じ処理を行ったりできます。さらにIf文を加えることで、「ある条件に合っているかどうか」をマクロ自身が判断して、処理を分けることができます。
このように組み合わせることで、マクロは表の中の多くのデータを順番に確認しながら、それぞれの内容に応じて自動で適切な処理を行うことができます。これにより、単なる繰り返しではなく、状況に応じた柔軟な対応が可能になります。
たとえば、ある行は処理をして、別の行はスキップする、というように、マクロが自ら判断して必要な行だけに対応することもできます。これは、人が1件ずつ確認して判断しながら作業していたことを、すべて自動で行えるようにする仕組みです。
この組み合わせを使いこなせるようになると、マクロの活用範囲が一気に広がり、日常のルーチン作業やチェック業務、データ整理などがスムーズに、そしてミスなく行えるようになります。初心者にとっても、実務に直結する非常に役立つスキルです。


2章 実際に組み合わせてみよう

ここではA列の値とB列の値が一緒なら背景色が無色で、異なれば赤にして赤セルが一つでもあれば、ビープ音をならすマクロを組みたいと思います。
ついでにA列とB列の値は0と1からなるランダムな数字でマクロで記入したいと思います。

これを実際にコードにすると下記になります。
Sub ボタン1_Click()
Dim randNum1, randNum2 As Integer
Dim i As Integer
Dim colorFlag As Boolean
' 5 行目まで ランダムに数字を決定
For i = 1 To 5 Step 1
randNum1 = Int(2 * Rnd)
randNum2 = Int(2 * Rnd)
Cells(i, 1).Value = randNum1
Cells(i, 2).Value = randNum2
Next
colorFlag = False
'5 行目まで A 列と B 列の値を比較して、処理を行う
For i = 1 To 5 Step 1
If Cells(i, 1).Value = Cells(i, 2).Value Then
Cells(i, 1).Interior.ColorIndex = xlNone
Cells(i, 2).Interior.ColorIndex = xlNone
ElseIf Cells(i, 1).Value <> Cells(i, 2).Value Then
Cells(i, 1).Interior.Color = RGB(255, 0, 0)
Cells(i, 2).Interior.Color = RGB(255, 0, 0)
colorFlag = True
End If
Next
' もし赤セルがあったらビープ音をならす
If colorFlag = True Then
Beep
End If
End Sub

これを実行すると、下の画像のようになり、毎回結果が異なります。



赤セルがあるとビープ音鳴らしてくれるのでわかりやすいですね。


さいごに

ここではセルの値読み取りとfor文if文を組み合わせることを行いました。
組み合わせると人間が行うような作業ができるようになりますね!
ぜひみなさんも組み合わせて楽をしましょう!!


株式会社ONE WEDGE

【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp/

Discussion