Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » ActiveSheetsというプロパティやオブジェクトは存在しない


ActiveSheetsというプロパティやオブジェクトは存在しない

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「activesheets.copy」
「activesheets.name」
「for each shp in activesheets.shapes」
「マクロ activeworkbook.activesheets.sort.sortfields.clear」
という、気になる検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

気になったのは「ActiveSheets」という単語です。

ActiveSheetsという名前のプロパティやオブジェクトは存在しない

VBE(Visual Basic Editor)のオブジェクトブラウザーで、「activesheets」を検索すればわかるとおり、

ActiveSheetsというプロパティやオブジェクトは存在しない

「ActiveSheets」という名前を持つプロパティやオブジェクトは存在しません。

[スポンサードリンク]

「activesheets.copy」
「activesheets.name」
「for each shp in activesheets.shapes」
「マクロ activeworkbook.activesheets.sort.sortfields.clear」
といった検索をした方の中には、単なるタイプミスの方もいらっしゃるのでしょうけれど、本気で「ActiveSheets」が存在すると考えていた方もいらしたように思います。

ActiveSheetとWindow.SelectedSheets

Excel VBAで、アクティブなシートを表すオブジェクト(WorksheetオブジェクトまたはChartオブジェクト)を返すのは、ActiveSheetプロパティです。

ActiveSheetsというプロパティやオブジェクトは存在しない

アクティブなシートというのは必ず1枚ですから、単数形のActiveSheetという名前が付けられています。ActiveSheetsではありません。

選択されている複数のシートを表すコレクションを返すのは、WindowオブジェクトのSelectedSheetsプロパティです。

ActiveSheetsというプロパティやオブジェクトは存在しない

選択されているシートは複数の可能性もありますから、SelectedSheetsという複数形の名前が付けられています。

自然言語とプログラミング言語の違い

我々が普段の生活で使う自然言語は、新しい単語が自然発生的に生まれるのが普通です。

例えば、「自撮り」という単語を誰が最初に使ったのか知りませんけれど、スマホが普及してから一般的になった単語です。

例えば、英語で「google」という単語を動詞として使うことが特殊ではなくなったのは、IT系のお仕事をしていない方も、Googleを使うようになってからのはずです。

自然言語では、自然に新しい単語が生まれることや、いつの間にか既存の単語が別の使われ方をするようになることは、よくあることです。

これに対して人工言語の一種であるプログラミング言語では、そのようなことは決してありません。

新しい単語が生まれるときには、必ず、誰かがその単語が表す、機能などを作っています。

Excelを自動的に処理するExcel VBAの世界では、オブジェクトに関する新しい単語を作るのは、絶対にMicrosoftです。
Microsoftが、Excelに新しい機能を加え、その機能を表すオブジェクトをVBAから操作できるようにしてくれたときに、新しい単語が登場します。
それ以外に、オブジェクトに関する単語が誕生することは、あり得ません。

ActiveSheetがアクティブなシートを表すオブジェクトを返すプロパティだからといって、勝手にActiveSheetsと入力したところで、選択されている複数のシートを表すオブジェクトを取得できるということはありません。
デフォルト状態のExcel VBAの世界では、Microsoftが作った単語しか使うことはできません。

そして、我々が扱えるオブジェクトに関する、すべての単語を教えてくれるのが、VBEのオブジェクトブラウザーです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » ActiveSheetsというプロパティやオブジェクトは存在しない

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » ActiveSheetsというプロパティやオブジェクトは存在しない

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.