2008年11月25日

Typeプロパティ

Chartオブジェクトの関連で、「これは、これでいいのか?」と思うことを1つ。

WorksheetオブジェクトにはTypeプロパティがあります。
VBAヘルプによると、このプロパティは値の取得のみ可能で、ワークシートの種類を表すXlSheetTypeクラスの定数が使用できます。

このクラスに用意されている「種類」としては、「ワークシート」を表す「xlWorksheet」のほかに、「グラフシート」を表す「xlChart」など。……まあ、「ワークシートの種類」というよりも「シートの種類」といったほうが正確ですね。
ところが、実はグラフシートを表すChartオブジェクトでは、このTypeプロパティを使用することはできません。

Chartオブジェクトには、現在、公式にはTypeプロパティというメンバは存在しないことになっています。
……本当は非表示のメンバとして存在しているのですが、このプロパティは「シートの種類」ではなく「グラフの種類」を表しています。

この「グラフの種類」というのも実は旧タイプで、おそらくグラフの分類が現在よりもシンプルだった時代のものです。
現在は、「集合縦棒」「積み上げ縦棒」などの細かい分類を表すことができるChartTypeプロパティが使用されています。

つまり、Chartオブジェクトを取得して、それがワークシートかグラフシートかを調べたいと思っても、Typeプロパティでは調べることができないわけです。
ActiveChartプロパティや、Chartsコレクションにインデックスを指定した場合など、最初からChartオブジェクトとして取得したのであれば、まあ調べる必要もないでしょう。
しかし、ActiveSheetプロパティや、Sheetsコレクションにインデックスを指定して「シート」の1つとして取得した場合でも、取得されるのはChartオブジェクトであり、そのTypeプロパティは「シートの種類」ではなく「グラフの種類」を表しています。

シートのTypeプロパティで調べられるのは、ワークシートとグラフシート以外にはExcel4マクロシートやダイアログシートなど、現在ではまず使われなくなったシートであるため、事実上、このプロパティはWorksheetオブジェクトでしか使用できないということになります。

つまり、シートの種類を表すプロパティが、特定の種類のシートでしか使用できないという……それじゃダメじゃん。(^^;)
posted by 土屋和人 at 08:57| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/23348327
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック