こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
突然ですがもし、5,000行ある売上リストから「空白セル」を見つけるとしたら、目で追うと1時間はかかりますよね。集中力も切れます。
フィルター機能も一回探すだけならいいですが、頻繁に使わないといけないならかなり面倒です。
でも、VBAの SpecialCells を使えば、1秒もかかりません。
この機能は、Excelに「空白だけ選んで!」「数式だけ選んで!」と命令できる、いわば「超高性能な自動選別機」です。
今回はその方法とコピペで使えるコードを紹介します。
コピペで使えるVBAコード
今回は、実務で本当によく使う2つのパターンを用意しました。
標準モジュールに貼り付けて、F5キーを押すだけで動きます。
① 「空白セル」を一瞬で見つけて黄色にする
データの入力漏れチェックに最適です。
Sub HighlightBlankCells()
' 範囲選択されている場所、または表全体を対象にする
Dim rng As Range
' エラー回避(該当するセルがないとエラーになるため)
On Error Resume Next
' 空白セル(xlCellTypeBlanks)だけを取得
Set rng = Selection.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
' 結果の判定
If rng Is Nothing Then
MsgBox "空白セルは見つかりませんでした!", vbInformation
Else
rng.Interior.Color = vbYellow ' 背景を黄色に
MsgBox rng.Count & " 個の空白セルが見つかりました。", vbExclamation
End If
End Sub
② 大事な「数式セル」だけ選んで文字を赤くする
「どこに数式が入ってるかわからないから触るのが怖い」という不安を消します。
Sub SelectFormulaCells()
Dim rng As Range
On Error Resume Next
' 数式が入っているセル(xlCellTypeFormulas)だけを取得
Set rng = Cells.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "数式セルはありませんでした。", vbInformation
Else
rng.Font.Color = vbRed ' 文字色を赤に
rng.Select ' 選択状態にする
MsgBox rng.Count & " 個の数式セルを選択しました。", vbInformation
End If
End Sub
SpecialCellsの重要性
この SpecialCells メソッドは、指定した型(空白や数式など)に一致するすべてのセルを表す Range オブジェクトを返してくれます。
つまり、ループ処理(For文など)で1つずつセルを確認するよりも、Excelの内部機能を使うため、圧倒的に処理速度が速いということです。
「遅いコード」を卒業する第一歩にもなるので、ぜひ試してみてください。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント