事務職をしていてよく使う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
シートを削除したり、ファイルを閉じたりする時に、確認メッセージが表示されてマクロの処理がストップしてしまうことが多々あります。
マクロで命令していることなので、メッセージで処理を止めたくない時に、「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のお仕事での基本的な使い方のチェックにこちらの記事もどうぞ。