INDEX
Newの概要
オブジェクト生成 VBAの予約語 | ||
New 概要 New キーワードは、VBAでクラスモジュールのインスタンスを作成したり、オブジェクトを動的に生成するために使用されます。 わかりやすく説明 New は、「このオブジェクトを新しく作って!」という命令です。例えば、Excelの |
||
|
Newの基本的な使い方(クラスモジュールのインスタンス作成)
クラスモジュールを使用して、オブジェクトを作成する基本的な例です。
' クラスモジュール(Class1)内
Public Property Get Message() As String
Message = "Hello from Class1!"
End Property
' 標準モジュール(Module1)内
Sub CreateClassInstance()
Dim obj As New Class1
MsgBox obj.Message, vbInformation, "Newの例"
End Sub
解説:
Class1
というクラスモジュールを定義し、そのインスタンスを作成。Dim obj As New Class1
で、オブジェクトobj
を生成。- 作成したオブジェクトの
Message
プロパティを取得し、メッセージボックスに表示。
ExcelでのNewの活用例(新しいワークブックの作成)
新しいExcelブックを作成する例です。
Sub CreateNewWorkbook()
Dim wb As Workbook
Set wb = Workbooks.Add ' 新しいブックを作成
wb.SaveAs "C:\Temp\NewWorkbook.xlsx"
MsgBox "新しいブックを作成しました。", vbInformation, "完了"
End Sub
解説:
Workbooks.Add
を使って新しいExcelファイルを作成。SaveAs
で特定のパスに保存。
Newを使って新しいシートを追加
新しいシートを作成して名前を変更する例です。
Sub AddNewWorksheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add ' 新しいシートを追加
ws.Name = "新しいシート"
MsgBox "シートを追加しました。", vbInformation, "完了"
End Sub
解説:
ThisWorkbook.Sheets.Add
で新しいシートを追加。ws.Name = "新しいシート"
でシート名を変更。
Newを使ったオブジェクト変数の初期化(Setを使う方法)
New は Dim ... As New
だけでなく、Set
を使ってオブジェクトを代入する方法もあります。
Sub InitializeObject()
Dim obj As Object
Set obj = New Collection ' 新しいコレクションを作成
obj.Add "データ1"
obj.Add "データ2"
MsgBox "コレクションに " & obj.Count & " 個のデータを追加しました。"
End Sub
解説:
Set obj = New Collection
で、新しいCollection
オブジェクトを作成。- データを追加し、
Count
プロパティで個数を取得。
エラーを回避する方法
New を使用する際に、オブジェクトの初期化に失敗する可能性があるため、エラーハンドリングを追加しましょう。
Sub SafeObjectCreation()
Dim obj As Object
On Error Resume Next
Set obj = New Collection
If Err.Number <> 0 Then
MsgBox "オブジェクトの作成に失敗しました: " & Err.Description, vbExclamation, "エラー"
Err.Clear
Else
MsgBox "オブジェクトを正常に作成しました。"
End If
End Sub
解説:
- New の処理でエラーが発生した場合、エラーメッセージを表示。
- 成功した場合は、通常のメッセージを表示。
Newの注意事項
- New で作成したオブジェクトは適切に解放する: 使い終わったら
Set obj = Nothing
で解放するのが望ましい。 - Excelの組み込みオブジェクトには New を使わない:
Workbook
やWorksheet
はSet obj = Workbooks.Add
のように作成する。 - New を使うと、オブジェクトが都度初期化される: そのため、複数回使う場合は注意が必要。
よくある質問
- Q: New はすべてのオブジェクトに使えますか?
- A: いいえ。Excelの組み込みオブジェクト(
Workbook
やWorksheet
)にはSet
を使う必要があります。 - Q: New を使わない方法はありますか?
- A: 事前にオブジェクトを作成しておき、
Set
を使って参照する方法もあります。 - Q: New を使って作成したオブジェクトは自動的に削除されますか?
- A: 通常はVBAの終了時に削除されますが、明示的に
Set obj = Nothing
で解放するのが推奨されます。
まとめ
- New キーワードは、VBAでオブジェクトを動的に作成するために使用される。
- クラスモジュールのインスタンス作成や、Excelのワークブック・シートの操作に活用できる。
- オブジェクト変数の初期化には
Set
を使うことが一般的。 - エラーハンドリングを活用し、予期しないエラーを防ぐことが重要。