VBAの勉強をしていると、setというキーワードが出てきます。
setステートメントを使いこなせると、マクロで自動化できる幅がぐっと広がります。
でも、setはいまいち使い方が分からない方が多いのではないでしょうか?
そこで本記事では、setの意味・使い方を初心者の方にもわかりやすく解説していきます。
【マクロVBA】setの意味・使い方を理解する【オブジェクトとは?】
setステートメントとは、オブジェクト変数を特定のオブジェクトに割り当てるために使用されます。
オブジェクト変数は、エクセルのオブジェクト(ワークシート、ワークブック、セルなど)を参照するために使用されます。
Set ステートメントを使用してオブジェクト変数を初期化することで、そのオブジェクトに対して操作を行ったり、そのオブジェクトのプロパティやメソッドを使ったりすることができます。
これが基本の説明ですが、用語が難しくて良く分からないですよね。
初心者の方にもわかるように説明していきます。
setステートメントをわかりやすく説明
setステートメントは、オブジェクト変数を定義する時に用いられるものです。
変数とは、任意のデータなどを一時的に格納する箱です。
「〇〇=〇〇」という形式を取ります。
dim i as long
i = 1
こんな感じで、1という数字を一時的に「i」という変数=箱に格納しています。
この「〇〇=〇〇」という形式は、基本データ型の変数への値の代入に使用されます。
整数、実数、文字列、ブール値などの基本データ型の変数に値を代入する場合に使用します。
一方で「オブジェクト変数」に使用されるのが、今回ご説明する「setステートメント」です。
オブジェクト変数とは、Excel VBAのコンテキストにおいては、ワークシートやセル(Range("A1")
)などのアドレスを格納する時に使います。
・Workbook: ワークブックオブジェクト(Excelのワークブックファイル)
・PivotTable: ピボットテーブルオブジェクト(Excelのピボットテーブル)
・Application: アプリケーションオブジェクト(Excelアプリケーション全体を表すもの)
・Worksheet:ワークシートオブジェクト(エクセルのシート)
・range:rangeオブジェクト(range(“A1”)などセル範囲を表す)
上記オブジェクトを変数に格納する時は「set 〇〇=〇〇」という形式で表現します。
Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx")
Dim myPivotTable As PivotTable
Set myPivotTable = ActiveSheet.PivotTables("PivotTable1")
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim rng As Range
Set rng = ws.Range("A1")
つまりsetステートメントとは、シートやrangeなど、特定のアドレスを変数として格納するときに使うと理解しておけばOKです。
先ほどは上記の通り定義しましたが、オブジェクト指向プログラミング全般の文脈では、より一般的な定義が適切です。
オブジェクトとは、データ(プロパティ)とそれを操作する機能(メソッド)を一つにまとめた実体であり、プログラム内で実世界の概念やアイテムを表現し、その属性や操作をシミュレートするために使用されます。
Excel VBAのコンテキストにおいては、ワークシートやセル(Range("A1")
)などのアドレスをオブジェクトと定義することは問題ありません。ただし、オブジェクト指向プログラミングの一般的な定義を念頭に置いておくことが重要です。
コメント