【初心者向け】VBAコードを覚える前に知っておきたい「使いどころ」10選|社内で本当に役立つ自動化の考え方

はじめに

「VBAを勉強してみたいけど、コードを見ると難しそう…」
そんな人に向けて、今回はコードを書く前に理解しておきたい「使いどころ」を紹介します。
実際にどんな場面でVBAが役立つのかを知るだけでも、業務改善のヒントになります。


① ファイルを開いたら自動で今日の日付を入れる

毎日「=TODAY()」を打つのは地味に面倒。
VBAならファイルを開いた瞬間に日付が自動で入ります。
報告書や日報など、提出書類に便利です。
▶ コードを見る

Private Sub Workbook_Open()
    Sheets("Sheet1").Range("A1").Value = Date
End Sub

ポイント: Excelを開くと自動実行される仕組みを「イベント」と呼びます。


② 入力漏れを自動で見つけたい

「空欄チェック」って意外と時間がかかりますよね。
VBAを使うと、空白のセルが黄色く光ります。
入力漏れを一瞬で見つけられるので、提出前チェックに便利です。
▶ コードを見る

Sub HighlightBlanks()
    Cells.Interior.ColorIndex = xlNone
    On Error Resume Next
    Cells.SpecialCells(xlCellTypeBlanks).Interior.Color = RGB(255, 230, 153)
End Sub

ポイント:「空欄を探して色を付ける」という“人の動作”を自動化しています。
     ただ、色付けるだけで消えないのでご注意。。。


③ 重複しているデータを見つけたい

社員名簿や商品リストなど、重複登録を防ぎたい場面に使えます。
VBAは一覧をチェックして、同じ値があるセルを色付けしてくれます。
▶ コードを見る

Sub HighlightDuplicates()
    Dim c As Range
    For Each c In Selection
        If Application.WorksheetFunction.CountIf(Selection, c.Value) > 1 Then
            c.Interior.Color = RGB(255, 150, 150)
        End If
    Next c
End Sub

ポイント:「CountIf関数」を使って“同じ値の数”を数えています。


④ シートを自動で並び替える

部署ごとや日付ごとにシートを管理していると、順番を変えるのが面倒ですよね。
このマクロは、シート名の順番を自動で並び替えます。
▶ コードを見る

Sub SortSheets()
    Dim i As Integer, j As Integer
    For i = 1 To Sheets.Count - 1
        For j = i + 1 To Sheets.Count
            If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then
                Sheets(j).Move Before:=Sheets(i)
            End If
        Next j
    Next i
End Sub

ポイント: シートが多いファイルで順序を整理したいときに使えます。


⑤ フォルダ内のファイル名を一覧にする

フォルダにあるファイルを一覧化したいときに使えるマクロです。
Excelが「ファイル名」と「更新日」を自動で書き出します。
▶ コードを見る

Sub ListFiles()
    Dim fso As Object, folder As Object, file As Object
    Dim i As Long
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\Users\Public\Documents")
    i = 2
    For Each file In folder.Files
        Cells(i, 1).Value = file.Name
        Cells(i, 2).Value = file.DateLastModified
        i = i + 1
    Next
End Sub

ポイント: “フォルダを覗いてリスト化する”動きをExcelにさせています。


⑥ ファイル保存時に自動で日付をつける

「報告書_20250101.xlsx」のように日付付きで保存したいときに便利です。
手動で名前を変える手間を省けます。
▶ コードを見る

Sub SaveWithDate()
    Dim fname As String
    fname = ThisWorkbook.Path &amp; "\報告書_" &amp; Format(Date, "yyyymmdd") &amp; ".xlsx"
    ThisWorkbook.SaveCopyAs fname
    MsgBox "保存しました:" & fname
End Sub

ポイント: Format関数で「日付→文字列」に変換しています。


⑦ 数字に自動でカンマをつける

「経費」や「金額」を扱う表では見やすさが大事。
このマクロで、選択範囲に一括でカンマ区切りをつけられます。
▶ コードを見る

Sub FormatNumbers()
    Selection.NumberFormat = "#,##0"
End Sub

⑧ 特定の文字を含む行を別シートへコピー

「確認済み」「未処理」など、特定キーワードを含む行だけ抜き出したいときに使います。
▶ コードを見る

Sub ExtractRows()
    Dim src As Worksheet, dest As Worksheet, i As Long, r As Long
    Set src = Sheets("一覧")
    Set dest = Sheets("抽出")
    dest.Cells.Clear
    r = 1
    For i = 1 To src.Cells(Rows.Count, 1).End(xlUp).Row
        If InStr(src.Cells(i, 1).Value, "確認") > 0 Then
            src.Rows(i).Copy dest.Rows(r)
            r = r + 1
        End If
    Next i
End Sub

ポイント: “InStr”は「文字を探す」命令です。


⑨ すべてのシートをPDF出力

シートをまとめてPDFにするときに便利。 手動で「印刷 → 名前をつけて保存」を繰り返す必要がなくなります。
▶ コードを見る

Sub ExportToPDF()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If Application.WorksheetFunction.CountA(ws.UsedRange) > 0 Then
            ws.ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=ThisWorkbook.Path & "\" & ws.Name & ".pdf"
        End If
    Next ws
    MsgBox "出力完了"
End Sub

⑩ シートを一括で保護・解除

誤操作を防ぎたいとき、すべてのシートを一括で保護できます。 解除マクロも一緒に使うと便利です。
▶ コードを見る

Sub ProtectAll()
    Dim ws As Worksheet
    For Each ws In Worksheets
        ws.Protect Password:="pass"
    Next ws
End Sub

Sub UnprotectAll()
    Dim ws As Worksheet
    For Each ws In Worksheets
        ws.Unprotect Password:="pass"
    Next ws
End Sub

ポイント: 「全体を守る」ことでファイルの安全性を確保できます。


まとめ

VBAを学ぶときは、まず「どんな場面で役立つか」を知ることが大切です。
どのマクロも、人の操作をExcelにやらせているだけ。
動きを想像できるようになると、コードも自然と読めるようになります。

次は、少しずつ「どんな命令で動いているか」を理解していきましょう。

あと、VBAで行った処理は、元に戻す処理で戻らないので注意しましょう


コメント

タイトルとURLをコピーしました