「VBAを使って必要なデータを自動取得してるんだけど、時々データが飛んでいることがある。見落とし防止のために警告を表示したい。」
この記事ではこんな悩みを解決します。
実行したVBAコードの最後に付け加えるだけで、簡単にミスを防止できるようになりますので、ぜひ最後までご覧ください。
やりたいことのイメージ共有
本題に入る前に、この記事で紹介する内容を共有化しておきましょう。
以下のように必要なデータを自動で取得しましたが、一部のデータに抜けがあった場合を想定しています。
すべての処理を自動で実行していると、このような抜けに気づかずに、ミスをしてしまうこともあると思います。
この記事では、データ収集の処理を実行したあとに、抜けているデータの項目を警告表示してくれる方法についてご紹介します。
メッセージを表示するコード:Msgboxについて
今回はMsgboxというコードを使用することによって、VBA実行中にメッセージを表示するという手法をとります。
このMsgboxの使い方としては、
Msgbox “***”
****の部分には表示したい文言を記入すればOKです。
Msgbox 変数 & “***”
のような使い方も可能です。
では実際の使用例を見ていきましょう。
欠損データに対して警告表示するVBAコード
以下が実行コードです。
今回はメッセージボックスという機能を使っています。
Sub Blank_Alert()
Dim i As Integer
Dim item_name As String
i = 1
Do Until Cells(i, 1) = ""
item_name = Cells(i, 1)
If Cells(i, 2) = "" Then
MsgBox item_name & "がありません。"
End If
i = i + 1
Loop
End Sub
※今回はA列にデータの項目、B列に取得データが記入されているという前提でコードを記入しておりますので、あなたの処理内容に応じて適宜、検索範囲を書き換えてください。基本的にはcells(*,*)の部分を修正すればOKです。
記述が終わったらあとは実行するのみ!
以下が実行結果です。
まずは一つ目の欠損データである従業員数。
きちんと空白であることを表示してくれていますね。
創立年についても同様です。
こちらも問題なく警告が表示されていますね。
また、欠損データが多い場合、
〇何度も警告が出てめんどうだ
〇一度の警告ですべて表示してほしい
という方は以下のコードに書き換えることで、警告を一度にまとめることが可能になります。
Sub Blank_Alert()
Dim i As Integer
Dim item_name As String
Dim blank_item As String
Dim for_message As String
i = 1
Do Until Cells(i, 1) = ""
item_name = Cells(i, 1)
If Cells(i, 2) = "" Then
blank_item = blank_item & item_name & "と"
End If
i = i + 1
Loop
If blank_item <> "" Then
for_message = Left(blank_item, Len(blank_item) - 1)
MsgBox for_message & "がありません。"
Else
End If
End Sub
以下が実行結果です。
一つの警告で欠損データを教えてくれていますね。
おわりに
というわけで今回は、VBA実行中に欠損データにたいして警告表示をする方法についてご紹介しました。
業務を自動化することはすばらしいことですが、それによってミスを誘発してしまうこともあります。
この記事で紹介したような警告を要所でいれておくことによって、その確率はぐっと減らせるはずです。ぜひ使い方をマスターしておきましょう。
このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。
■もっと業務を効率的に行いたい。
■しょうもないミスを減らしたい。
こんな人はぜひ他の記事も読んでみてください。
きっとお役にたてることがあるはずです。
また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。
私にわかる範囲であればご協力いたしますので。(もちろん無料です。)
最後に・・・
このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。
Twitterもやっていますので、興味があれば覗いてみてください。
それではまた!!
オススメ記事
コメント