- ベストアンサー
Office 2003 excel vbaでグラフの種類を一系列毎に判定するマクロの実行結果が想定と異なる
- Office 2003 excel vbaでグラフの種類を一系列毎に判定するマクロを組もうとしていますが、実行結果が想定と異なる問題が発生しています。
- マクロの対象となるグラフには合計で4系列が含まれており、上から棒グラフ、棒グラフ、マーカーなしの折れ線グラフ、マーカー付のおれせんグラフとなっています。
- 実際には「51」「51」「65」「4」と表示されるため、どこで間違っているのかを教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
別に間違っているわけではありません。 ChartType指定は .ChartType = xlColumnClustered ...などとしますが、この『xlColumnClustered』は文字列定数です。 コーディング時、 Dim c As Chart c.ChartType= とタイプすると=の後に[定数の一覧]がポップアップしますね。 設定する時はこの中から選択する事ができます。 ですが、VBEで[Ctrl]+[g]、イミディエイトウィンドウで ?xlColumnClustered とタイプして[Enter]。 51 と出力されます。 .ChartType = xlColumnClustered は .ChartType = 51 と指定している事になります。 人がプログラムを組む時に意味が読み取れるように元から組み込んであるものが文字列定数で、 プログラムはそれを数値として解釈します。 逆にこの51からxlColumnClusteredを導くのは難しいです。 文字列定数自体、意味があるように設定する為に、いろんなメソッドやプロパティで 同じ数値に対して違う文字列が割り当てられています。 参考までに「組み込み定数の一覧」を参照してみてください。 http://support.microsoft.com/kb/407881/ja (新しいものがあるのかどうか知らないのでxl95のものですが) XlChartTypeにどんな文字列定数があるかは、VBEで[F2]キー[オブジェクトブラウザ]で確認できます。 仮に「 xlColumnClustered 」を検索文字列に入れて検索すると Excel.XlChartType のメンバ一覧が表示されます。 それぞれのメンバを選択すると Const xlColumnClustered = 51 (&H33) Const xlLine = 4 Const xlLineMarkers = 65 (&H41) ...と、何の数値が文字列定数に割り当てられているかまでは判ります。 予め対応表を用意しておけば文字列定数を出力する事も可能ですが、 どんな定数でも対応できるようにコードから導き出す方法があるかどうかは知りません。
その他の回答 (1)
- end-u
- ベストアンサー率79% (496/625)
>どんな定数でも対応できるようにコードから導き出す方法があるかどうかは知りません。 ちょっと気になったので調べてみました。 TypeLib Information について検索してみてください。 『Office アプリケーションの組み込み定数の値を取得する方法』 http://support.microsoft.com/kb/239930/ja 『VB : 定数の名称を取得する』 http://d.hatena.ne.jp/parasporospa/20060816/1155694359 TLBINF32.DLLがない環境もあるようですが、あれば使えます。
お礼
>『Office アプリケーションの組み込み定数の値を取得する方法』 こちらが参考になりました。 ご回答いただき、大変ありがとうございました。
お礼
ご回答ありがとうございます。 >予め対応表を用意しておけば文字列定数を出力する事も可能ですが、 頻繁に使用する種類のグラフについて、自分で対応表を作成して対応致しました。