【VBA】Excelマクロを利用して作業効率を上げたい②
前回から特に便利だなと思ったExcelマクロについて記しています。
機能実装
続きです。今回は2つのマクロを記載して見ました。
実装3〜コピー範囲を他のシートへ貼り付け〜
こちらの関数は、選択範囲を選択済みのシートへコピーするマクロです。
少しわかりづらいのですが、ヘッダーを統一させたい場合に便利なマクロで、多用しました。
例えば「A」シート、「B」シート、「C」シートを選択している状態とします。
その状態のまま、「C」シートのA1セルからB8セルまで(A1:B8)を選択します。
そしてこの関数を呼び出すと、「A」シート、「B」シートへ選択してる内容がコピーされます。
Sub コピー範囲を他のシートへ貼り付け()
Dim コピー元シート As Worksheet
Dim コピー先シート As Worksheet
Dim 選択範囲 As Range
Set コピー元シート = ActiveSheet
Set 選択範囲 = Selection
' グループ選択されている各シートに対して処理
For Each コピー先シート In ActiveWindow.SelectedSheets
' コピー元シートはスキップ
If コピー先シート.Name <> コピー元シート.Name Then
' コピー元と同じセル位置にコピー
選択範囲.Copy Destination:=コピー先シート.Range(選択範囲.Address)
End If
Next コピー先シート
MsgBox "コピーが完了しました。", vbInformation
End Subこちらがショートカットを追加するためのコードです。
今回はctrl + ⇧ + cを押下することで発動するようにしてみました。
Private Sub Workbook_Open()
' ~~~追加
' Ctrl + Shift + C にコピー範囲を他のシートへ貼り付け マクロを割り当て
Application.OnKey "^+c", "コピー範囲を他のシートへ貼り付け"
' ~~~追加ここまで
End Sub実装4〜選択範囲をグレーアウト〜
続いて選択をグレーアウトするマクロです。
グレーアウト自体は手間ではないのですが、グレーというのはいろいろな色があります。
標準化することで、濃いグレーがある、薄いグレーあるなどバラバラな状態を防ぐことができます。
こちらでは、黒字が見辛くならないようRGB(240, 240, 240)を採用しました。
' グレーらしさを判定する関数
Function グレーらしいか(色 As Long) As Boolean
Dim r As Long, g As Long, b As Long
r = 色 Mod 256
g = (色 \ 256) Mod 256
b = (色 \ 65536) Mod 256
' 3色の差が15以内ならグレーらしいと判定
If Abs(r - g) <= 15 And Abs(r - b) <= 15 And Abs(g - b) <= 15 Then
' ただし、白(255,255,255)は除外する
If Not (r = 255 And g = 255 And b = 255) Then
グレーらしいか = True
Exit Function
End If
End If
グレーらしいか = False
End Function
Sub グレー背景()
Dim rng As Range
Dim cell As Range
On Error Resume Next
Set rng = Application.Selection
On Error GoTo 0
If rng Is Nothing Then
MsgBox "セル範囲が選択されていません。", vbExclamation
Exit Sub
End If
For Each cell In rng
Dim 現在の色 As Long
現在の色 = cell.Interior.Color
If グレーらしいか(現在の色) Then
' 背景がグレーらしい場合は白背景にする
cell.Interior.Color = RGB(255, 255, 255)
Else
' それ以外は薄いグレー(240,240,240)にする
cell.Interior.Color = RGB(240, 240, 240)
End If
Next cell
End Sub続いて、ショートカットです。
今回は、ctrl + ⇧ + gを押下することでグレーアウトされます。
Private Sub Workbook_Open()
' ~~~追加
' Ctrl + Shift + G に グレー背景 マクロを割り当て
Application.OnKey "^+g", "グレー背景"
' ~~~追加ここまで
End Subまとめ
いかがでしたでしょうか?
2回連続Excelマクロを書いてみました。
全て業務でよく使うマクロですので、使えば使うほど(慣れるほど)作業が早くなります。
ショートカットはカーソルで操作するより数倍の作業スピードになることは間違い無いので、ショートカットキーメモの記事と合わせてご使用ください。

