経緯
Excel VBAで複数のグラフを扱っている中で、
**「特定の系列だけ線の色を変えたい」**という場面がありました。
とくに、グラフが多くなってくると、マウス操作で色を変えるのは非効率です。
そこで今回は、VBAで「セルの値に該当する系列名の線だけ色を変更する」処理をボタンひとつで実現しました。
実現したい仕様
- Sheet1 に多数の散布図が配置されている
- セル A1 に「NO1」「NO2」「NO3」など、系列名が入力されている
- 「色変更」ボタン(図形)を押すとカラーパレットが表示され、選択した色で該当系列の線色が変更される
- ボタン(図形)の枠線の色も選んだ色に変更される
事前準備
- カラーパレットの表示には Windows API を使用します
- マクロを登録する図形(「色変更」ボタン)をあらかじめ配置しておいてください
実装コード(VBA)
以下のコードを 標準モジュール に貼り付けてください。
1. Windows API とカラーダイアログの定義
Private Type CHOOSECOLOR
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
Flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lpPal As Long, lpColorRef As Long) As Long
Const CC_RGBINIT = &H1&
Const CC_FULLOPEN = &H2&
Private Function ShowColorDialog(Optional ByVal DefaultColor As Long = 0) As Long
Dim cc As CHOOSECOLOR
Dim CustColors As String
CustColors = String$(16 * 4, 0)
With cc
.lStructSize = Len(cc)
.hwndOwner = Application.hwnd
.Flags = CC_RGBINIT Or CC_FULLOPEN
.rgbResult = DefaultColor
.lpCustColors = CustColors
End With
If ChooseColor(cc) Then
ShowColorDialog = cc.rgbResult
Else
ShowColorDialog = -1
End If
End Function
2. 色を選択して該当系列の線色を変更する処理
Sub Change_the_ColorLine()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim ser As Series
Dim targetName As String
Dim selectedColor As Long
Dim shp As Shape
Set ws = ThisWorkbook.Sheets("Sheet1")
targetName = ws.Range("A1").Value
selectedColor = ShowColorDialog
If selectedColor = -1 Then Exit Sub
' 各グラフの対象系列の線色を変更
For Each chartObj In ws.ChartObjects
For Each ser In chartObj.Chart.FullSeriesCollection
If ser.Name = targetName Then
ser.Format.Line.ForeColor.RGB = selectedColor
End If
Next ser
Next chartObj
' ボタン自身の枠線の色を変更
Set shp = ActiveSheet.Shapes(Application.Caller)
shp.Line.ForeColor.RGB = selectedColor
End Sub
マクロ登録の手順
- Excel上に図形を挿入(例:「色変更」などと表示)
- 図形を右クリック → 「マクロの登録」
Change_the_ColorLineを選択して「OK」
これで、図形を押すだけでカラーパレットが表示され、色を選ぶとその色が系列の線に反映されます。
注意点
Application.Callerを使っているため、マクロは図形から実行してくださいA1セルに対象の系列名(グラフ内で表示される系列名)が正確に入力されている必要があります- カラーダイアログは Windows OS の標準機能を使っているため、Macでは動作しません
まとめ
ShowColorDialogでカラーパレットを表示し、VBAで色を取得できる- Excel内のグラフをループし、特定の系列名にマッチした線の色だけ変更可能
- 図形(ボタン)の色変更も併用することで、視覚的にもわかりやすいUIが実現できる
Excelのグラフ操作を自動化・効率化したい方には非常に有用なテクニックです。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
