VBAではWorkbookやWorksheetを扱う機会が多いですよね。これらを扱うためにはオブジェクト変数を使う必要がありますが、その際に使われるのがSetステートメントです。
この記事では、Setステートメントについて
- Setステートメントとは
- オブジェクトを作成する方法
- Workbookのオブジェクトの利用方法
- WorkSheetのオブジェクトの利用方法
など基本的な内容から、具体的な内容についても解説していきます。今回はSetステートメントについて、使い方をわかりやすく解説します!
Setとは
Setステートメントはオブジェクト型で定義したオブジェクト変数にオブジェクトを格納するときに使用します。VBAでオブジェクトというと、ブックやシートそしてセルなど操作をする対象となるものになります。
主なオブジェクトを表にまとめてみました。
| 名称 | オブジェクト名 |
|---|---|
| アプリケーション | Application |
| ワークブック | Workbook |
| ワークシート | Worksheet |
| セル | Range |
オブジェクトとそれ以外の違い
オブジェクトは先ほど表にまとめました。
では、オブジェクト以外にはどんなものがあるのでしょうか?IntegerやLong、またStringやDateなどの型もオブジェクト型ではありません。
したがって、Setステートメントは使う必要はありません。
オブジェクトを作成する方法
オブジェクトを使用するためにはまず「Dim」句と「As」句を使ってオブジェクト変数を宣言、定義する必要があります。
宣言、定義したオブジェクト変数にオブジェクトを格納する際に、Setステートメントを使用します。
Dim オブジェクト変数名 As オブジェクト型名 Set オブジェクト変数名 = オブジェクト
それではサンプルコードで確認しましょう。
Sub macro1()
Dim myRange As Range
Set myRange = Range("A1")
myRange.Value = "Hello VBA!"
End Sub
実行結果:

このサンプルコードではRange型のオブジェクト変数myRangeを宣言しています。Setステートメントを使って、myRangeにRangeのオブジェクトを格納し、そのプロパティを使って値を入力しています。
Nothingで参照を解除する方法
先ほどはSetステートメントでオブジェクトを作成する方法についてお伝えしました。
では、オブジェクトの参照を解除するにはどのようにしたらいいのでしょうか?その場合は、Nothingを使って以下のように記述します。
Set オブジェクト変数名 = Nothing
ただし、参照先のオブジェクトをメモリ上から削除しているわけではありません。参照を解除しているだけで参照先のオブジェクトは残っていることもありますので、注意しましょう!
オブジェクトは他から参照されている場合はメモリ上に残りますし、どれからも参照されていなければ自動で解放されます。
Workbookオブジェクトの利用方法
Workbookオブジェクトでよく使われるプロパティとメソッドについてまとめました。
プロパティ:
| プロパティ名 | 説明 |
|---|---|
| Name | 名前 |
| Path | 保存パス |
| FullName | 保存パス+ブック名 |
| Saved | 最後の保存時から変更の有無 |
| ReadOnly | 読み取り専用か否か |
| Sheets | 全てのシート |
| Worksheets | 全てのワークシート |
メソッド:
| メソッド名 | 説明 |
|---|---|
| Activate | アクティブに変更 |
| Close | 閉じる |
| Save | 上書き保存 |
| SaveAs | 名前を付けて保存 |
| SaveCopyAs | コピーを保存 |
| PrintOut | 印刷 |
| PrintPreview | 印刷プレビュー |
| Protect | 保護 |
| Unprotect | 保護を解除 |
それではこの中からNameプロパティを使ってブック名を表示してみましょう。
サンプルコードは下記のようになります。
Sub macro2()
Dim myBook As Workbook
Set myBook = Workbooks("Set.xlsm")
MsgBox myBook.Name, vbInformation
End Sub
実行結果:

このサンプルコードでは、Workbook型のオブジェクト変数myBookを宣言しています。Setステートメントを使って、myBookにWorkbookのオブジェクトを格納し、そのプロパティからブック名を表示させています。
Worksheetオブジェクトの利用方法
Worksheetオブジェクトでよく使われるプロパティとメソッドについてまとめました。
プロパティ:
| プロパティ名 | 説明 |
|---|---|
| Name | 名前 |
| Cells | 行番号、列番号でセルを指定 |
| Range | ”A1”形式でセルまたはセル範囲を指定 |
| Columns | 列を指定 |
| Rows | 行を指定 |
| Hyperlinks | ハイパーリンク |
| Visible | 表示するかどうか |
メソッド:
| メソッド名 | 説明 |
|---|---|
| Activate | アクティブに変更 |
| Select | 選択 |
| Copy | コピー |
| Move | 移動 |
| Paste | 貼り付け |
| PasteSpecial | 形式を選択して貼り付け |
| PrintOut | 印刷 |
| PrintPreview | 印刷プレビュー |
| Protect | 保護 |
| Unprotect | 保護を解除 |
それではこの中からCellsプロパティを使ってセルを指定してみましょう。サンプルコードは下記のようになります。
Sub macro3()
Dim mySheet As Worksheet
Set mySheet = Worksheets("sheet1")
mySheet.Cells(1, 1).Value = "Hello VBA!"
End Sub
実行結果:

このサンプルコードでは、Worksheet型のオブジェクト変数mySheetを宣言しています。
Setステートメントを使って、mySheetにWorksheetのオブジェクトを格納し、そのプロパティからセルを指定して値を入力しています。
まとめ
ここでは、Setステートメントについて説明しました。VBAはWorkbookやWorksheetなどのオブジェクトを操作するために、オブジェクト変数を宣言しSetステートメントを使う機会も多いかと思います。
使いこなすことができるようにこの記事を何度も参考にして下さいね!






