Excelでグラフの各要素のON/OFFをチェックボックスで操作する方法

チェックボックスさむね

この記事が参考になる方
  • Excelで操作するグラフの各線(要素)をチェックボックスでON/OFFしたい方
  • Excel VBAの知識を増やしたい方


Excel365では、グラフの各要素をON/OFFする機能が備わりました。

下の様に、グラフを選択すると出てくるフィルターマークをクリックしたら、チェックボックスがでてきます。

デフォルト機能


デフォルトでこの機能はありがたい!

でも『適用』ボタンを押さないといけないし、タイムリーにON/OFFが出来る訳ではないです。

今回紹介するのは、Excel365の前のバージョンでもできるVBAを使ったチェックボックスでのON/OFFをする方法です。


完成形のシートイメージはこちら

完成形2


~Excelでグラフの各要素のON/OFFをチェックボックスで操作する方法~

操作動画を作ってみたので、これも参考に見てください。

広告


チェックボックスやボタンの呼び出し、設定

■グラフを作っておきます


開発挿入チェックボックス で必要な数のチェックボックスを挿入

チェックボックス挿入1

チェックボックス挿入2

チェックボックス挿入3


■チェックボックスの位置を整列させたり、

チェックボックス調整1

チェックボックス調整2


テキストがフルで表示されるように、サイズ幅を大きくしておきます。

チェックボックス調整3


ボタンを挿入します。※四角のオートシェイプでも良いです

ボタン挿入

こちらはサイズやフォントを調整した後です。

ボタン設置完了


チェックボックスのテキストを自動で反映するVBAコード

■チェックボックス右横のテキストをグラフの各要素タイトルにする為のマクロです。

関係図は下図の通りです。

フィールドとコードの関係図


チェックボックスのテキストを自動で反映するVBAコード
Sub CheckBoxname() ActiveSheet.CheckBoxes(1).Select Selection.Characters.Text = Worksheets("マクロ").Range("C5").Value ActiveSheet.CheckBoxes(2).Select Selection.Characters.Text = Worksheets("マクロ").Range("D5").Value ActiveSheet.CheckBoxes(3).Select Selection.Characters.Text = Worksheets("マクロ").Range("E5").Value ActiveSheet.CheckBoxes(4).Select Selection.Characters.Text = Worksheets("マクロ").Range("F5").Value Range("O4").Select
End Sub

訳すると

・現在のシートのチェックボックス(1)を選択
・選択している図のテキスト=「マクロ」シートのC5の値に変える

という事を4つのチェックボックスに実施し、セルO4を選択して終わる

というものです。


■ボタンにマクロを適用させます。

マクロ登録_ボタン

そして、ボタンを押すとー


↓変わりましたね。

反映


さらに参照先の値を変えても、ボタンを押せば反映されます!

反映2


チェックボックスのON/OFFを設定するVBAコード

チェックボックスON/OFFとグラフの各要素の表示ON/OFFを連動させましょう


■グラフの名前を確認しておきます。 このグラフは「グラフ1」ですね。

グラフ名確認


このコードの様に、数字だけ変えていきます。

コード補足


チェックボックスのON/OFFを設定するVBAコード
Sub CheckBox1_OnOff() If ActiveSheet.CheckBoxes(1).Value = 1 Then ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(1).IsFiltered = False Else ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(1).IsFiltered = True End If Range("O4").Select
End Sub
Sub CheckBox2_OnOff() If ActiveSheet.CheckBoxes(2).Value = 1 Then ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(2).IsFiltered = False Else ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(2).IsFiltered = True End If Range("O4").Select
End Sub
Sub CheckBox3_OnOff() If ActiveSheet.CheckBoxes(3).Value = 1 Then ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(3).IsFiltered = False Else ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(3).IsFiltered = True End If Range("O4").Select
End Sub
Sub CheckBox4_OnOff() If ActiveSheet.CheckBoxes(4).Value = 1 Then ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(4).IsFiltered = False Else ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.FullSeriesCollection(4).IsFiltered = True End If Range("O4").Select
End Sub

訳すると

・チェックボックス(1)の値が1(= ON)ならば、
・現在のシートの「グラフ1」をアクティブにし、
・1つめのグラフ要素のフィルターをFalse(=フィルターをかけない=表示させる)にする

・チェックボックス(1)の値が1でないならば、

・現在のシートの「グラフ1」をアクティブにし、
・1つめのグラフ要素のフィルターをTrue(=フィルターをかける=表示させない)にする

という設定を4つのチェックボックスにしています。


■各チェックボックスにマクロを登録します。

マクロ登録_チェックボックス


これで完成です!!

できました


[ad02]



動画も参考にして下さい。


おまけ

 

Excelテク集の目次は下の通り
(下のリンクから各項目に直接アクセスできます)

時短や快適さアップのテクニックが多くあります!!


最後まで見ていただき、ありがとうございました。


広告


広告

広告