【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マクロを書いてみました。
全て業務でよく使うマクロですので、使えば使うほど(慣れるほど)作業が早くなります。
ショートカットはカーソルで操作するより数倍の作業スピードになることは間違い無いので、ショートカットキーメモの記事と合わせてご使用ください。