きむおばプロフィール画像

きむおばです。関東在住の40代の主婦です。 パート・派遣・フリーランスの3足のわらじ中。フリーランスでは、ファイナンシャルプランナーとしてライターやセミナー講師をしたり、サイト制作やプログラムを作ったりしています。
お金・子育て・趣味のこと…何でも気ままに書く雑記ブログです。
目標は、ライター・サイト制作・広告他の収入バランスを整えること。ブログ収入UPに今年は力を入れます。

Menu
主婦の働き方・稼ぎ方 

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

Excelの活用でもっと事務処理を時短化

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

事務職歴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分以内に作成せよ

Excelの活用でもっと事務処理を時短化
Twitterで最新情報をお知らせ
記事がお役に立てたらシェアお願いします♪