【VBA】Excelマクロを利用して作業効率を上げたい①
はじめに
こんばんは。
皆さんは作業効率を上げるためにどのような事を大切にしているでしょうか?
僕は、社会人1年目に教えていただいた「キーボード操作のみで作業する」ことにこだわるという事をを教えていただきました。
他にも、ツールをどんどん活用して、なければ作る、自分用のマクロをどんどん作っていくと良いと学びました。
さて、今回はExcelマクロなどと呼ばれる、VBScriptを組んでいきます。

VBScript
VBScriptとは、主にWindows環境でのシステム管理や自動化、タスクのスクリプト化に利用されます。
Windows上で直接実行できるため、管理者向けのツールやバッチ処理で利用されることが多いです。
VBScriptはかつてWindows環境で広く使われたスクリプト言語ですが、時代の変化とともにその利用範囲は限定的となっています。
今回は、2024年9月〜2025年3月の間に個人的に多用したマクロをまとめて見ました。
実装先は、Personal.xlsbというファイルがおすすめです。
作成方法も記しておきます。
①まずは無題のブックを開く

② 開発タブ→Visual Basicを押下
③VBAProject(PERSONAL.XLSB)→モジュール→Module1を押下


④表示されたウィンドウにマクロを貼り付ける
⑤ThisWorkBookへの設定
ショートカットキーマクロはこちらへ設定してください。


Personal.xlsbがない場合
初めて作成する場合などは、Personal.xlsbがない場合があります。
その場合、以下の手順でPersonal.xlsbを作成してください。
- Excelを起動し、空白のブックを開く。
- 開発タブのマクロの記録をクリック。
開発タブが表示されていない場合は、「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」を有効にしてください。 - マクロの記録ダイアログで、保存先を個人用マクロブックに変更し、適当なマクロ名を入力して「OK」をクリック。
- 適当にセルを選択するなど、簡単な操作を行う(実際のマクロ内容は何でも構いません)。
- もう一度マクロの記録をクリックして記録終了を選択し、記録を停止する。
この操作により、Excelが自動的にPersonal.xlsbを作成し、そこにマクロが保存されます。
機能実装
実装1〜文字色・背景色変更〜
RGB関数を使わずLong型で実行するようにしています。
変数名は日本語でも問題ないので、日本語を使用しています。
※文字化けしたら諸々置換しておいてください笑
Const 赤色 As Long = 255
Const 青色 As Long = 15773696
Const 黒色 As Long = 0
Const 黄色 As Long = 65535
Const 緑色 As Long = 5296274
Const 橙色 As Long = 49407
Const 灰色 As Long = 14277081
Const 白色 As Long = 16777215
Sub ChangeFontColorCycle()
Dim cell As Range
For Each cell In Selection
' 赤の場合は青に変更
If cell.Font.Color = 赤色 Then
cell.Font.Color = 青色
' 青の場合は黒に変更
ElseIf cell.Font.Color = 黒色 Then
cell.Font.Color = 赤色
Else
cell.Font.Color = 黒色
End If
Next cell
End Sub
Sub CycleBackgroundColor()
Dim cell As Range
For Each cell In Selection
' 無色の場合は黄色に変更
If cell.Interior.Color = 白色 Then
cell.Interior.Color = 黄色
' 黄色の場合は緑に変更
ElseIf cell.Interior.Color = 黄色 Then
cell.Interior.Color = 緑色
' それ以外は設定しない
Else
cell.Interior.Color = 白色
End If
Next cell
End Sub実装2〜「A1」へ〜
すべてのシートをA1へ設定するマクロです。
表示倍率も統一できます。(設定する場合は半角数値を入力してください)
2025年4月16日追記:枠線の非表示化の機能も追加しました!
2025年4月25日追記:スクロール位置もリセットされるよう修正しました!
Sub Move2A1()
Dim ws As Object ' ワークシートやその他シートを扱うため、Object型
Dim zoomRatio As Variant
Dim gridlinesOption As VbMsgBoxResult
'【1】グリッド線の設定方法をユーザーに確認
gridlinesOption = MsgBox( _
"グリッド線(シートの枠線)の設定をどうしますか?" & vbCrLf & _
"【はい】:枠線を表示する" & vbCrLf & _
"【いいえ】:枠線を非表示にする" & vbCrLf & _
"【キャンセル】:枠線は変更しない", _
vbYesNoCancel + vbQuestion, "グリッド線設定の確認")
'【2】拡縮比率をポップアップで入力
zoomRatio = InputBox("すべてのシートに設定する拡縮比率を入力してください(10~400%):", "拡縮比率設定")
' 入力が数値かどうか、かつ範囲チェック
If IsNumeric(zoomRatio) Then
If zoomRatio < 10 Or zoomRatio > 400 Then
MsgBox "拡縮比率は10~400%の範囲で入力してください。", vbExclamation
Exit Sub
End If
End If
'【3】すべてのシートをループして処理
For Each ws In ActiveWorkbook.Sheets
If TypeOf ws Is Worksheet Then
' シートをアクティブに
ws.Activate
' Ctrl + Home 相当の動作
ws.Cells(1, 1).Select
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
' 拡縮比率の設定
If IsNumeric(zoomRatio) Then
ActiveWindow.Zoom = zoomRatio
End If
' グリッド線の表示設定
Select Case gridlinesOption
Case vbYes
ActiveWindow.DisplayGridlines = True
Case vbNo
ActiveWindow.DisplayGridlines = False
End Select
End If
Next ws
' 最後に1番目のシートに戻す(同様にスクロールもリセット)
With ActiveWorkbook.Sheets(1)
If TypeOf .Parent.Sheets(1) Is Worksheet Then
.Activate
.Cells(1, 1).Select
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
End If
End With
'【5】 完了メッセージ
If IsNumeric(zoomRatio) Then
MsgBox "すべてのシートでセル A1 を選択し、拡縮比率 " & zoomRatio & "% を設定しました!", vbInformation
Else
MsgBox "すべてのシートでセル A1 を選択しました!", vbInformation
End If
End Sub
ショートカットキー
これらのマクロを使用するためのショートカットキーを作成しました。
- Ctrl + ⇧ + r
全てのシートを指定した倍率でA1を選択
倍率を設定しない場合は、表示倍率を変えずにA1を選択 - Ctrl + ⇧ + 1
フォントカラーを赤→青→黒→赤→...へ変更
赤でも青でもない場合は黒へ変更
キーを押すたびに色が変更される - Ctrl + ⇧ + 2
文字の背景を白→黄→緑→白→...へ変更
黄でも緑でもない場合は白へ変更
キーを押すたびに色が変更される
Private Sub Workbook_Open()
' Ctrl + Shift + R に MoveToA1 マクロを割り当て
Application.OnKey "^+r", "Move2A1"
Application.OnKey "^+1", "ChangeFontColorCycle"
Application.OnKey "^+2", "CycleBackgroundColor"
End Subおわりに
いかがでしたでしょうか?
これらのScriptは、personal.xlsbとして作成しておくとどのファイルでも使うことができます。
キー操作のみで文字色・背景色を変更できたり、納品時にExcelを整えたりする際などに使用できるマクロを書いています。
引き続きVBAシリーズとして、便利なマクロがあれば載せていきます。
