VBATips

指定セルの背景色をコピぺ処理をパーツ化する【エクセルマクロ】

パーツ化とは

ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。
処理はパーツ単位で分ける事を心掛けましょう。

分かりやすく説明すると、エクセルの「関数」と同様です。
SUM関数であれば セル内に「=SUM(1+2+3)」と記載すれば、セルには「6」と表示されますよね。
値を渡せば正しい値で返ってくる動きです。

このコードをコピペでOK

'■セルの背景色をコピペする
Private Function Call_InteriorColorCopyPaste(CopyRange As Range, PasteRange As Range)
    Dim CopyColor As Long
    Dim sR As Long
    Dim sG As Long
    Dim sB As Long
    
    CopyColor = CopyRange.Interior.Color
    sR = CopyColor Mod 256
    sG = Int(CopyColor / 256) Mod 256
    sB = Int(CopyColor / 256 / 256)
    PasteRange.Interior.Color = RGB(sR, sG, sB)
End Function

 

上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。

Sub test()
    '■Range形式でもコピペOK。(A1背景色をB1にコピペ。塗り潰し)
    Call Call_InteriorColorCopyPaste(Range("A1"), Range("B1"))
 
    '■Cells形式でもコピペOK。(A1背景色をB1にコピペ。塗り潰し)
    Call Call_InteriorColorCopyPaste(Cells(1, 1), Cells(1, 2))
    
    '■複数セルでもコピペOK。(A1背景色をB1:E1にコピペ。塗り潰し)
    Call Call_InteriorColorCopyPaste(Range("A1"), Range("B1:E1"))
End Sub

RangeでもCellの形式でもOKです。
複数セルに一括コピペもOKです。

その他

視覚効果は大事です。売上分布表、売上達成率などの各種帳票を作成する際、金額や個数のみの表示ではなく、背景色を使用した視覚効果(塗り潰し)で表現した方がわかりやすいです。

上記パーツ化の良さはコピペ元をエクセル内に設定値として用意しておくことで、ユーザーが背景色を変更できます。マクロのコードを変更しない為、無駄に問い合わせや要望を受けなくて済みます。

下記は当方のシステムKyoteiVBAのデータインポート仕様の画像です。

結果に対して予想がどうだったのか?を色分けする事で視覚に訴えます。
エクセルだからできる事、マクロだからこそできる事。そのような形でマクロを組んでもらいたいと思います。

 

コメント

タイトルとURLをコピーしました