🎨
ApplyGradientFill
書式設定選択範囲にグラデーション塗りつぶしを適用します(青→白)
選択したセル範囲にグラデーション(2色のなめらかな色の変化)の背景色を適用するマクロです。開始色・終了色・グラデーションの方向(水平・垂直・斜め)を指定でき、視覚的に印象的なデザインをExcelシート上で実現します。タイトルセルや見出しセル・ダッシュボードのKPIカードなど、特別に目立たせたいセルの装飾に活用できます。通常の書式設定では設定できないグラデーションをVBAで自動適用します。内部ではCells.InteriorオブジェクトのTwoColorGradientメソッドを利用し、開始色・終了色・角度を指定するだけでプロ品質のグラデーションを再現します。手動でのグラデーション設定は「セルの書式設定」から複数ステップを踏む必要がありますが、このマクロなら一括適用が可能です。SetCellStyleと組み合わせれば、文字色やフォントも含めた統一感のあるデザインに仕上げられます。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 対象範囲を選択してから ApplyGradientFill を実行します
🎯 活用シーン
- ✓月次報告書のタイトル行や見出しにグラデーション背景を加えて、プレゼン資料として印象的なデザインに仕上げたいとき
- ✓KPIダッシュボードのヘッダーセルにグラデーションを適用して、視覚的に洗練された管理画面を作成したいとき
- ✓部門別や担当者別にグラデーション色を変えて、複数セクションを持つ報告書を見分けやすくしたいとき
- ✓商品カタログや提案書の表紙セルにグラデーション装飾を加えて、視覚的なインパクトを高めたいとき
- ✓社内ポータル用のExcelダッシュボードで、セクションごとに異なるグラデーション背景を設定し視認性を高めたいとき
💡 実装のヒント
- ▸グラデーション塗りつぶしは印刷時にモノクロプリンターで再現されにくい場合があります。印刷用資料に使う場合は事前に印刷プレビューで確認してください。
- ▸グラデーションを解除したい場合は、セルを選択して「塗りつぶしなし」を設定するか、ResetCellStylesマクロを使用してください。
- ▸開始色と終了色の差が大きいほど鮮やかなグラデーションになります。近似色を選ぶと上品なニュアンスのグラデーションになります。
- ▸グラデーションの方向は角度(0〜360度)で指定でき、斜めのグラデーションも自由に設定できます。
- ▸淡い色同士のグラデーションは印刷時に視認性が下がることがあるため、コントラストを確認してから採用してください。
💻 VBAコード
' ApplyGradientFill
' -----------------
' Macro Name: ApplyGradientFill
' Description: 選択範囲にグラデーション塗りつぶしを適用します(青→白)
' Parameters: なし
' Returns: なし
' Usage: 対象範囲を選択してから ApplyGradientFill を実行します
' -----------------
Sub ApplyGradientFill()
On Error GoTo ErrorHandler
Dim rng As Range
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
Exit Sub
End If
Set rng = Selection
With rng.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 90
.Gradient.ColorStops(1).ThemeColor = msoThemeColorAccent1
.Gradient.ColorStops(1).TintAndShade = 0
.Gradient.ColorStops(2).ThemeColor = msoThemeColorBackground1
.Gradient.ColorStops(2).TintAndShade = 0
End With
MsgBox "グラデーション塗りつぶしを適用しました", vbInformation, "完了"
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub