ExcelVBAを利用中のグラフ内に作成しているテキストボックス。この中に、値をVBAマクロを用いて自動で入力する方法についてご解説していきましょう。
まず画面のイメージから確認していきましょう。
ExcelVBAのグラフ内にあるテキストボックスのイメージ
ExcelVBAのグラフ内にあるテキストボックスのイメージ画像はこちらをご覧下さい。
★【グラフ内のテキストボックスの画像イメージ】
このように、グラフの中に赤枠のようにテキストボックスを作って、その中に自動で内容を表示していきます。
もしテキストボックス内にあるデータに、特定列の情報等規則性のあるデータを入れていく場合、毎回手入力で値を変更するのは、業務上非常に非効率です。
そこで、このデータを自動でセットしていきます。このデータを自動でセットするためには、やることは大きくわけて3つです。
Excel VBAでグラフ内のテキストボックスに値を出力する3つの手順
このテキストボックスに値を入力するためには、3つのことを行う必要があります。
<グラフ内のテキストボックスに値を出力する3つの手順>
- テキストボックスに名前をもつ
- グラフに名前をもつ
- プログラム(VBAマクロ)を作る
この3つの処理を確実に行っていけば、値が出力されますので、それでは具体的に見ていきましょう。
名称登録の設定のポイントは2つ
まずは、プログラミングを読み込ませるためには、下記2つの項目名の登録が必要不可欠ですので、まず設定のポイントから確認していきましょう。
<2つの設定のポイント>
- テキストボックスに名前を登録
- グラフの名前を登録
1.項目名の登録手順
その設定画面は、下記のように行ってください。
■項目名の登録手順:「ホームタブ」⇒「検索と選択」⇒「オブジェクトの選択と表示」
この流れでテキストボックスの画面表示することができ、またその項目を一つずつ選択することで項目名の変更が可能です。
「オブジェクトの選択と表示」の中にグラフの名称を登録する項目名が含まれていますので。ここから変更していきしましょう。
2.テキストボックスとグラフの名称登録
まず、テキストボックスとグラフの名称登録は、下記画面から行うことができます。設定方法はこちら。
上記画像の赤枠分からテキストボックスやグラフの名称を登録することができます。
この名称を登録することで、テキストボックスにデータをセットするための項目をプログラム上で読み込むことができます。
3.プログラムソースの記述方法
プログラムのメソッド・記述方法と記述する上でのポイントについて解説していきましょう。
使用するメソッド
グラフ内のテキストボックスに値を入力する構文は下記になります。
■使用するメソッド
ActiveSheet.Shapes("テキストボックス名").TextFrame.Characters.Text ="値"
こちらを参照して、入力して見て下さい。上記でテキストボックスに名前を付けた名称を使って、テキストボックス名を書き換えて下さい。そして、値を入れていきましょう。
但し、これだけで動作しません。続きは下記を見てご覧下さい。
プログラムソースの記述方法
それでは、実際のソースは、下記を使用して書き換えて使用して下さい。
■ソースの記述の仕方
1 2 3 4 5 6 7 | ThisWorkbook.Worksheets("シート名").Activate With Worksheets("Graph").ChartObjects("グラフ名") .Activate '一度グラフをActiveにするのがポイント With ThisWorkbook.Worksheets("シート名") <span style="color: #ff0000;">ActiveSheet.Shapes("All").TextFrame.Characters.Text</span> = "値” ’ここで値がセットされる End with End With |
ソースの記述の流れは、下記のような手順で行います。
- まず最初にグラフがあるシートをActiveにしましょう。
- そのシート内にあるグラフをActiveにして選択した状態にします。
- その中にあるテキストボックスに値をセットする
こうした流れでソースを記述することで、グラフ内のテキストボックスに値がセットされた状態になります。
ソース記述のポイント
ソースを記述する上での重要なポイントは、まずシート内にあるグラフActiveイベントを入れることが非常に重要で、これが選択された状態でないと、テキストボックスに値がうまく入らない場合がありますので、これでまず試してみましょう。
そして、実際に「.TextFrame.Characters.Text」を使って、値を入れてみましょう。
Microsoft Office2007以上に対応
一応、確認ですが、バージョンによっては、コーディングが異なる場合があります。
これよりも旧バージョンでは、このプログラムメソッドが動かない可能性がありますので、Office2007以上のバージョンのみご参照下さい。
まとめ
このように、Excel VBAでは、グラフ内のテキストボックスに値を入力する方法は、Excelのバージョンによっても記述が若干異なる場合がありますので、バージョンに対応させながら、上手にプログラミングしてみましょう。
もしこれで解決しない場合は、遠慮なくご連絡下さい。
お待ちしております。