事務職をしていてよく使うExcel VBAコード一覧~マクロで仕事を自動化~

このブログではアフィリエイト・アドセンス広告を利用しています

当ブログでは、アドセンス・アフィリエイト広告を掲載しています。
消費者庁が発表しているルールに沿って記事を作成していますが、問題のある表現を見つけた際にはご連絡ください。

下の子が生まれてから、仕事と育児を両立したいので事務職にジョブチェンジしました。

事務職歴8年の私が、よく使うExcel VBAのコードを自分の備忘録も兼ねて、一覧にまとめました。

目次(読みたいところへジャンプ!)

    よく使うExcel VBAコード一覧

    列幅を自動で調整する

        Worksheets("Sheet1").Range("A:E").Columns.AutoFit

    入力されたデータの文字数に合わせて、ちょうどよい列幅に自動調整してくれる便利なメソッド「AutoFit」。

    列幅を調整したいシート名と列または列の範囲を指定してあげるだけ。

    上のサンプルコードでは、シート名「Sheet1」のA~E列の幅を自動調整させています。

    今日の日付を自動入力

        Worksheets("Sheet1").Range("F2") = "=today()"

    文書作成日をマクロを実行した日に自動で設定してくれる便利な関数「today()」を好きなセルに設定しているだけのコードです。

    上のサンプルコードでは、シート名「Sheet1」のF2セルに今日の日付を表示してくれます。

    データのある最終行を取得する

    Dim lLastRow As Long
    
        lLastRow = Worksheets("Sheet1").Range("A1").End(xlDown).Row

    データの入っているセルの最終行を教えてくれる「End(xlDown).Row」は本当に便利ですよね。ほぼすべてのマクロに登場するぐらい使っています。

    実際のキーボード操作だと、Ctrl+↓キーを押した状態ですね。最終行へジャンプしてくれるコードになります。

    マクロを実行する度にデータ数が異なっても、常に最終行をチェックして正しく処理を行うことができるようになります。

    データのある最終列を取得する

    Dim lEndCol As Long
    
        lEndCol = Worksheets("Sheet1").Range("A1").End(xlToRight).Column

    最終行だけでなく、最終列を確認したい時は、「.End(xlToRight).Column」を使います。

    何万行もあるデータをコピーする時に便利なのが、最終行と最終列を返してくれるこの2つのプロパティになります。

    確認メッセージボックスを表示しないようにする

        Application.DisplayAlerts = False

    シートを削除したり、ファイルを閉じたりする時に、確認メッセージが表示されてマクロの処理がストップしてしまうことが多々あります。

    Excel このシートは完全に削除されます。よろしいですか。

    マクロで命令していることなので、メッセージで処理を止めたくない時に、「Application.DisplayAlerts」プロパティをFalseにしておくと、全てのアラートをオフにすることができます。

    ただし、必要なアラートまで表示されなくなってしまうので、オフにする必要がなくなったタイミングでTrueに戻しておきましょう。

    列を挿入する

        Columns("B:B").Select
        Selection.Insert Shift:=xlToRight

    上のサンプルコードでは、選択しているB列の右側に1列挿入します。

    1行挿入なら、下のようなコードになります。5行目の下に1行挿入されます。

        Rows("5:5").Select
        Selection.Insert Shift:=xlDown

    セル内の文字を中央揃えにする

        Worksheets("Sheet1").Columns("G:I").HorizontalAlignment = xlCenter

    上のサンプルコードでは、G~I列を水平方向に中央揃えにしています。

    水平方向の文字配置「HorizontalAlignment」の指定する定数一覧

    xlGeneral 標準(既定値)
    xlLeft 左詰め
    xlCenter 中央揃え
    xlRight 右詰め
    xlJustify 両端揃え
    xlDistributed 均等割り付け
    xlCenterAcrossSelection 選択範囲内で中央(セルを連結している場合)

    垂直方向の文字配置は、「VerticalAlignment」プロパティになります。

    垂直方向の文字配置「VerticalAlignment」の指定する定数一覧

    xlTop 上詰め
    xlBottom 下詰め
    xlCenter 中央揃え(既定値)

    罫線を引く

    Dim lLastRow As Long
    
        lLastRow = Worksheets("sheet1").Range("A2").End(xlDown).Row
        Range("A2:J" & lLastRow).Borders.LineStyle = xlContinuous

    上のサンプルでは、A2からJ列の最終行までの範囲のセルを実線で囲んで表が完成します。

    XlLineStyleに設定できる線の種類

    xlContinuous 実線
    xlDash 破線
    xlDashDot 一点鎖線
    xlDashDotDot ニ点鎖線
    xlDot 点線
    xlDouble 2本線
    xlLineStyleNone 線なし
    xlSlantDashDot 斜破線

    Excelって表計算ソフトだから、最初から薄く罫線が引かれているからわざわざ線なんて引かなくてもいいんじゃないかと思うのです。外資系なら不必要な罫線はまず引かないって下の本に書いてました。

    でも、日本のITリテラシー低めの上司ってやたら「罫線で囲め」って指示しますよね。
    マクロで秒殺してしまいましょう。

    印刷設定で各ページのタイトル行を指定する

     Worksheets("sheet1").PageSetup.PrintTitleRows = "$3:$3"

    いくらペーパレス化が叫ばれていたとしても、レコード数が多いデータを印刷する必要もありますよね。

    そんな時に使えるのがこの「PrintTitleRows」プロパティです。

    各ページの先頭に、サンプルでは3行目をタイトル行として繰り返し印刷時に出力してくれるようになります。

    ちなみに、印刷列を指定するプロパティは「PrintTitleColumns」です。

    テンプレートシートをコピーする

        Sheets("Templete").Copy After:=Sheets(Worksheets.Count)

    テンプレートファイルをシートの最後(Copy After)にコピーして追加したい時に使えるコードです。

    例えば、SEOのためにアクセス解析レポートのテンプレートシートを作っておくとしましょう。
    そして、別シートに月別のアクセス結果のデータをまとめておきます。

    マクロを実行すると、入力された月までのレポートを一度に数秒で完成させることができるようになります。

    今回は、とりあえず思いつく10個のExcel VBAサンプルコードを挙げてみました。

    他にも思いついたら、随時追加していきたいと思います。
    offsetも便利ですよね。

    Excelのお仕事での基本的な使い方のチェックにこちらの記事もどうぞ。

    >>>クイズ感覚であなたのExcel力を試そう。課題①全店舗売上集計表を3分以内に作成せよ

    同じカテゴリの関連記事リスト