activeworkbook.activesheets.sort.sortfields.clear」という、気になる検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。気になったのは「ActiveSheets」という単語です。「ActiveSheets」という名前を持つプロパティやオブジェクトは存在しません。activeworkbook.activesheets.sort.sortfields.clear」といった検索をした方の中には、単なるタイプミスの方もいらっしゃるのでしょうけれど、本気で「ActiveSheets」が存在すると考えていた方もいらしたように思います。VBAで、アクティブなシートを表すオブジェクト(WorksheetオブジェクトまたはChartオブジェクト)を返すのは、ActiveSheetプロパティです。アクティブなシートというのは必ず1枚ですから、単数形のActiveSheetという名前が付けられています。ActiveSheetsではありません。選択されている複数のシートを表すコレクションを返すのは、WindowオブジェクトのSelectedSheetsプロパティです。選択されているシートは複数の可能性もありますから、SelectedSheetsという複数形の名前が付けられています。自然言語とプログラミング言語の違い我々が普段の生活で使う自然言語は、新しい単語が自然発生的に生まれるのが普通です。「自撮り」という単語を誰が最初に使ったのか知りませんけれど、スマホが普及してから一般的になった単語です。英語で「google」という単語を動詞として使うことが特殊ではなくなったのは、IT系のお仕事をしていない方も、Googleを使うようになってからのはずです。自然言語では、自然に新しい単語が生まれることや、いつの間にか既存の単語が別の使われ方をするようになることは、よくあることです。これに対して人工言語の一種であるプログラミング言語では、そのようなことは決してありません。新しい単語が生まれるときには、必ず、誰かがその単語が表す、機能などを作っています。VBAの世界では、オブジェクトに関する新しい単語を作るのは、絶対にMicrosoftです。Microsoftが、Excelに新しい機能を加え、その機能を表すオブジェクトをVBAから操作できるようにしてくれたときに、新しい単語が登場します。それ以外に、オブジェクトに関する単語が誕生することは、あり得ません。ActiveSheetがアクティブなシートを表すオブジェクトを返すプロパティだからといって、勝手にActiveSheetsと入力したところで、選択されている複数のシートを表すオブジェクトを取得できるということはありません。VBAの世界では、Microsoftが作った単語しか使うことはできません。我々が扱えるオブジェクトに関する、すべての単語を教えてくれるのが、VBEのオブジェクトブラウザーです。オブジェクト式解説編』を開催します。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。