【Excel】エクセル・VBA編  ワークブックとワークシートオブジェクト

オブジェクト階層

Excel VBAでは、オブジェクトに別のオブジェクトを含めることができ、そのオブジェクトに別のオブジェクトを含めることができます。

 

言い換えると、Excel VBAプログラミングでは、オブジェクト階層を操作します。これはおそらくかなり紛らわしいように思えますが、明確にします。

すべてのオブジェクトの母はExcelです。それをApplicationオブジェクトと呼びます。アプリケーションオブジェクトには他のオブジェクトが含まれています。

たとえば、Workbookオブジェクト(Excelファイル)です。これはあなたが作成したどのワークブックでもかまいません。Workbookオブジェクトには、Worksheetオブジェクトなどの他のオブジェクトが含まれています。Worksheetオブジェクトには、Rangeオブジェクトなどの他のオブジェクトが含まれています。

マクロ作成の章では、コマンドボタンをクリックしてコードを実行する方法について説明します。次のコード行を使用しました。

Range(“A1”).Value = “Hello”

しかし、私たちが本当に意味していたのは、

Application.Workbooks(“create-a-macro”).Worksheets(1).Range(“A1”).Value = “Hello”

注:オブジェクトは点でつながっています。幸い、このようにコード行を追加する必要はありません。これは、最初のワークシートのcreate-a-macro.xlsにコマンドボタンを配置したためです。異なるワークシート上のものを変更したい場合は、Worksheetオブジェクトを含める必要があります。読む。

コレクション

ワークブックとワークシートはどちらも複数形であることにお気づきかもしれません。それは彼らがコレクションだからです。Workbooksコレクションには、現在開いているすべてのWorkbookオブジェクトが含まれています。Worksheetsコレクションには、ブック内のすべてのWorksheetオブジェクトが含まれています。

ワークシート名

コレクションのメンバー、たとえば単一のWorksheetオブジェクトを参照する方法は3つあります。

1.ワークシート名を使用します。

Worksheets(“Sales”).Range(“A1”).Value = “Hello”

2.インデックス番号を使用します(1が左から始まる最初のワークシートです)。

Worksheets(1).Range(“A1”).Value = “Hello”

3. CodeNameを使用します。

Sheet1.Range(“A1”).Value = “Hello”

ワークシートのCodeNameを確認するには、Visual Basic Editorを開きます。プロジェクトエクスプローラでは、最初の名前はCodeNameです。2番目の名前はワークシート名(Sales)です。

コード名

注:ワークシート名またはワークシートの順序を変更してもCodeNameは変わりません。そのため、これがワークシートを参照する最も安全な方法です。ワークシートのCodeNameを変更するには、[表示]、[プロパティ]ウィンドウの順にクリックします。1つ欠点があります。異なるワークブックのワークシートを参照する場合は、CodeNameを使用できません。

プロパティとメソッド

それでは、Workbooks and Worksheetsコレクションのいくつかのプロパティとメソッドを見てみましょう。プロパティはコレクションが持っているもの(それらはコレクションを記述します)、メソッドは何かをするものです(それらはコレクションを使ってアクションを実行します)。

ワークシートにコマンドボタンを配置してコード行を追加します。

1. WorkbooksコレクションのAddメソッドは新しいブックを作成します。

Workbooks.Add

注:WorksheetsコレクションのAddメソッドは新しいワークシートを作成します。

 

2. WorksheetsコレクションのCountプロパティは、ブック内のワークシートの数を数えます。

MsgBox Worksheets.Count

シート上のコマンドボタンをクリックしたときの結果:

Excel VBAのCountプロパティ

注:WorkbooksコレクションのCountプロパティは、アクティブなワークブックの数を数えます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です