【VBA入門】Setでオブジェクトを作成する方法

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_HelloVBA

このサンプルコードでは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

実行結果:
Set.xlsm

このサンプルコードでは、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

実行結果:
range_HelloVBA

このサンプルコードでは、Worksheet型のオブジェクト変数mySheetを宣言しています。

Setステートメントを使って、mySheetにWorksheetのオブジェクトを格納し、そのプロパティからセルを指定して値を入力しています。

まとめ

ここでは、Setステートメントについて説明しました。VBAはWorkbookやWorksheetなどのオブジェクトを操作するために、オブジェクト変数を宣言しSetステートメントを使う機会も多いかと思います。

使いこなすことができるようにこの記事を何度も参考にして下さいね!

この記事を書いた人

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

目次