エクセルVBAでオブジェクト変数を使う方法 | マクロの基本と応用

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
オブジェクト変数とは?

「VBAのオブジェクト変数って何??」
このように悩んだことはありませんか?


オブジェクト変数ってなに?

「Set」や「With」の違いってなんなの?

・最後に「Nothing」をするのはどういう意味?

今回は、VBAの「オブジェクト変数」について
解説します!


この記事では、「エクセルVBAのオブジェクト変数」の使い方について詳しく説明します。

オブジェクト変数を正しく使えば、コードがスッキリし、効率的にエクセル操作ができるようになります!

この記事では、オブジェクト変数の基本から、SetやWith、Nothingを使った実践的な方法まで、初心者にもわかりやすく解説します。
ぜひ最後までお読みください。


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

この記事を見て「できるようになる」こと

この記事を読めば、以下のことができるようになります。

スポンサーリンク

VBA変数の種類を完全解説!初心者が知るべき使い方と違い

VBAにおける変数は、データを一時的に記憶するための箱のようなものです。
プログラム内でデータを扱う際に、変数を使うことでデータを柔軟に操作できます。

変数の説明を箱を用いて説明

VBAで使用される変数の基本についてもっと知りたい方は、以下の記事で詳しく解説しています。
こちらもぜひご覧ください。

あわせて読みたい
エクセルVBAで変数を使いこなす方法 | 変数の基本から実践まで 「VBAの勉強を始めたものの、変数の意味がよく分からない…」このように悩んだことはありませんか? ・変数ってよく聞くが結局何なの?・変数で型を指定する理由が分から...

VBAにおける各変数の違い

VBAには、さまざまな種類の変数があります。
以下に代表的な変数を紹介します。

種類説明
通常の変数データを一時的に記憶するための箱。
スコープは宣言されたプロシージャ内のみ。
グローバル変数プロジェクト全体で使用可能な変数。
モジュールの先頭で宣言され、すべてのプロシージャからアクセス可能。
大規模なプログラムでデータを共有するのに便利。
静的変数プロシージャの間で値を保持する変数。
Staticキーワードを使用して宣言され、プロシージャが終了しても値が
保持される。
計算の状態を保持したい場合に使用。
オブジェクト変数オブジェクトを参照するための変数。
Setステートメントを使用してオブジェクトを代入し、プロパティや
メソッドにアクセス可能。
エクセルのワークシートやセルなどの操作に使用。
また使用後は、Nothingで解放が必要です。

今回の記事では、その中でも オブジェクト変数 について詳しく解説していきます。

VBAの「オブジェクト変数」宣言方法 | DimとSet、Nothingの使い方を詳しく解説

VBAでオブジェクト変数を宣言する際には、以下の2つのステートメントを使います。
この2つを組み合わせることで、エクセルのワークシートやセル範囲を効率よく操作できるようになります。

さらに、使い終わったオブジェクト変数を正しく解放するために、Nothingを使う方法も押さえておきましょう。

2つのステートメントとは?
  • Dimステートメント
    • 変数名・変数の型を宣言します。
  • Setステートメント
    • オブジェクトを変数に割り当てます。

オブジェクト変数の基本構文

オブジェクト変数の基本構文は、以下の通りです。


オブジェクト変数の基本構文
設定解説
スクロールできます
項目必須/任意説明
Dim – 変数名必須任意の変数名を設定します。
例: Ws(Worksheetの略)
変数の型任意ワークブック: Workbook
ワークシート: Worksheet
セル範囲: Rangeなど
Set – 変数名必須Dimで宣言した変数名を指定します。
例: Set Ws
参照したいオブジェクト必須ワークブック、シート、またはセル範囲を指定します。
例: ThisWorkbook.Sheets("Sheet1")

【コード例】ワークシートをオブジェクト変数に設定する

以下は、ワークシートをオブジェクト変数に割り当てる具体例です。

Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet1")

'// Sheet1のセルA1に値を設定
Ws.Range("A1").Value = "Hello, World!"

このコードは、Dim Ws As Worksheetで変数Wsを宣言。
Set Ws = ThisWorkbook.Sheets("Sheet1")でシート「Sheet1」をWsに割り当てます。

また、1行で記述を行いたい場合、次のように「:」で区切ることで可能となります。

Dim Ws As Worksheet: Set Ws = ThisWorkbook.Sheets("Sheet1")

'// Sheet1のセルA1に値を設定
Ws.Range("A1").Value = "Hello, World!"

オブジェクト変数を解放するための「Nothing」の使い方

オブジェクト変数を使用した後は、Setステートメントを使ってNothingを代入することで、メモリを解放できます。
これにより、プログラムの動作を安定させ、メモリリーク(不要なメモリ消費)を防ぐことができます。

Nothingの基本構文

オブジェクト変数を解放するための「Nothing」
設定解説
スクロールできます
項目必須/任意説明
Set – 変数名必須解放するオブジェクト変数の名前を指定します。
Nothing必須変数に代入する値。
対象オブジェクトへの参照を切り、メモリを解放します。

【コード例】Nothingを使ってオブジェクト変数を解放する

以下は、ワークシート型のオブジェクト変数を宣言し、操作後に解放する例です。

Sub オブジェクト変数の解放例()
    '// ワークシート型の変数を宣言
    Dim Ws As Worksheet
    '// Sheet1を参照するように設定
    Set Ws = ThisWorkbook.Sheets("Sheet1")
    
    '// セルA1に値を設定
    Ws.Range("A1").Value = "Hello, World!"
    
    '// 使用後に変数を解放
    Set Ws = Nothing
End Sub
動作を解説
  • Dim Ws As Worksheetで変数Wsを宣言。
  • Set Ws = ThisWorkbook.Sheets("Sheet1")でオブジェクトを割り当て。
  • 必要な操作が終わった後、Set Ws = Nothingで変数を解放

なぜNothingが重要なのか?

  • メモリリークを防ぐ
    • 使用しなくなったオブジェクト変数を解放しないと、プログラムが終了してもメモリが解放されず、動作が不安定になる場合があります。
  • プログラムの安定性向上
    • 特に複数のオブジェクト変数を使うプログラムでは、Nothingを使ってメモリを整理することで、効率的にリソースを管理できます。

より詳しい情報は、Microsoft公式 – オブジェクト変数の作成を参照してみてください。

VBAオブジェクト変数の「必要性」と「メリット」を徹底解説

オブジェクト変数は、エクセルのワークブックやシート、セルなどを効率的に操作するために欠かせません。
これを使うことで、コードの可読性が向上し、処理が簡潔化され、エラーも減らすことができます。

ここでは、オブジェクト変数を使う3つの主要なメリットと、具体的なコード例を紹介します。

1. コードの簡潔化と可読性の向上

オブジェクト変数を使うことで、同じオブジェクト(例: ワークシート)に繰り返しアクセスする際のコード量を大幅に削減できます。
その結果、コードがスッキリとし、保守性も高まります。

オブジェクト変数を使わない例

'// オブジェクト変数を使わない例
ThisWorkbook.Sheets("Sheet1").Range("A1").Value = "Hello"
ThisWorkbook.Sheets("Sheet1").Range("A2").Value = "World"

ThisWorkbook.Sheets("Sheet1")が毎回記載されており、冗長で可読性が低下しています。

オブジェクト変数を使った例

'// オブジェクト変数を使った例
Dim Ws As Worksheet  '// 1. ワークシート型の変数を宣言
Set Ws = ThisWorkbook.Sheets("Sheet1")  '// 2. シート1を変数に格納

Ws.Range("A1").Value = "Hello"  '// 3. セルA1に値を設定
Ws.Range("A2").Value = "World"  '// 4. セルA2に値を設定

ThisWorkbook.Sheets("Sheet1")を一度だけ記載すればよく、コードが簡潔で見やすくなります。

このように、オブジェクト変数を使うことで、複数のセルや範囲を効率的に操作可能です。

2. 処理速度の向上

オブジェクト変数を使うことで、同じオブジェクトに複数回アクセスする際の処理が効率化されます。特に、大量のデータや複雑な処理を扱う場合に効果が顕著です。

'// オブジェクト変数を使った例
Dim Rng As Range
Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A1000")

'// 範囲内の全てのセルに値を設定
Rng.Value = "Data"

オブジェクト変数を使用しない場合、毎回セル範囲にアクセスするたびに処理負荷がかかりますが、変数で管理すれば効率的です。

3. エラーの防止

長いオブジェクト参照を繰り返すと記述ミスの可能性が高まりますが、オブジェクト変数を使うことでそのリスクを軽減できます。

オブジェクト変数を使わない例

'// オブジェクト変数を使わない例
ThisWorkbook.Sheets("Sheet1").Range("A1").Value = "Data"
ThisWorkbook.Sheets("Sheeet1").Range("A2").Value = "Error" ' ミスタイプ

オブジェクト変数を使った例

'// オブジェクト変数を使う例
Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet1")

Ws.Range("A1").Value = "Data"
Ws.Range("A2").Value = "Correct"

このように、オブジェクト変数を使用することでミスタイプを防ぎ、エラーを減らせます。

どんなときにオブジェクト変数を使うべき?

このことから、以下のようなシナリオで、オブジェクト変数を使用するのが効果的です。

  • 複数のセルやシートを操作する場合
    • 例: データの一括入力や範囲指定の操作。
  • 同じオブジェクトに繰り返しアクセスする場合
    • 例: 1つのシートで複数の処理を行う場合。
  • 処理速度やコードの保守性を重視する場合
    • 例: 大規模なプログラムや業務ツールの作成時。
スポンサーリンク

SetステートメントとWithステートメントの違いとは?

VBAでは、オブジェクトを扱う際に「Setステートメント」と「Withステートメント」を使用することが一般的です。
これらは似たような用途で使われますが、役割や使いどころが異なります。

SetステートメントとWithステートメントの違い、使い分けのポイント、そして具体的な活用例について解説します。

Withステートメントの特徴

Withステートメントは、特定のオブジェクトに対して複数のプロパティやメソッドを連続して操作する際に使用します。

Withステートメントについては、別の記事で詳しく解説を行っています。
是非合わせてご覧ください。

あわせて読みたい
VBA Withステートメントの使い方とSetの違い【入れ子・ループ解説】」 「特定のオブジェクトに対して、複数のプロパティやメソッドを簡潔に記述したいけど、どうやって書けばいいんだろう...」そんな疑問を持っていませんか? ・任意のオ...

Withの基本構文

Withの基本構文

例: ワークシートのセルを連続して操作する

With ThisWorkbook.Sheets("Sheet1").Range("A1")
    .Value = "Hello, World!"
    .Font.Bold = True
    .Interior.Color = RGB(255, 255, 0)
End With

特徴

Withの特徴について
  • 同じオブジェクトを繰り返し指定する必要がなく、コードが簡潔になります。
  • プロパティやメソッドを短縮表記できるため、可読性が向上します。

SetステートメントとWithステートメントの違いを比較

スクロールできます
項目SetステートメントWithステートメント
用途オブジェクトを変数に格納するオブジェクトに対して複数の操作を
まとめて行う
コードの再利用性高い低い
※特定の処理内で完結する場合に適している
記述の簡潔性冗長になりがち簡潔でわかりやすい
使用場面再利用するオブジェクトの操作や
複数の変数管理
一時的な操作やプロパティの連続操作

どちらを使うべき?使い分けのポイント

Setステートメントを使うべき場面

  • 複数の箇所で同じオブジェクトを再利用する場合。
  • オブジェクトを一度だけ設定して、他の処理で頻繁に使用する場合。
  • 例: ワークブックやシートを操作するプログラム全体で変数として保持する。

Withステートメントを使うべき場面

  • 一時的に1つのオブジェクトを操作する場合。
  • 特定のオブジェクトのプロパティやメソッドを連続して設定する場合。
  • 例: セルのフォーマットやスタイルを一括で設定する場合。

SetとWithの併用例

SetステートメントとWithステートメントを併用することで、それぞれの利点を活かした柔軟なコードを書くことができます。

例: シートとセルの操作

Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet1")

With Ws.Range("A1")
    .Value = "Hello, World!"
    .Font.Bold = True
    .Interior.Color = RGB(255, 255, 0)
End With

Set Ws = Nothing
ポイント
  • Setでシート全体を変数に割り当て、Withでセルの詳細なプロパティを操作します。
  • 再利用性と簡潔性を両立したコードです。
スポンサーリンク

オブジェクト変数を使用する際の注意ポイント

オブジェクト変数を使用するにあたって、下記の注意ポイントがあります。

1. オブジェクト変数の初期化

オブジェクト変数を使用する際は、必ず「Set ステートメント」を使ってオブジェクトを代入してください。
もしこれを忘れると、以下のようなエラーが発生します。

オブジェクト変数の初期化を忘れた際のエラー

例: 初期化の例と解説

Dim Ws As Worksheet
'// 初期化しない場合
'// Ws.Range("A1").Value = "Test"  '// ← Setを使用しないとエラー発生

'// 正しい初期化
Set Ws = ThisWorkbook.Sheets("Sheet1")
Ws.Range("A1").Value = "Test" ' 正常に動作

初期化を忘れると、オブジェクト変数が「空」の状態で操作されようとするため、エラーになります。

2. オブジェクト変数の解放

オブジェクト変数を使い終わった後は、「Set 変数名 = Nothing」で明示的にメモリを解放することが推奨されます。
これにより、メモリリーク(不要なメモリの使用)を防ぎ、プログラムを安定して動作させることができます。

⇒ もう一度「オブジェクト変数を解放するための「Nothing」の使い方」を見る

例: 解放の例と解説

Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet1")

'// 使用後に変数を解放
Set Ws = Nothing

解放を怠ると、オブジェクトへの参照が残り続け、プログラムがメモリを無駄に使用する可能性があります。

3. 同名の変数に注意

同じスコープ内で、通常の変数とオブジェクト変数を同じ名前で宣言しないように注意してください。
これにより混乱が生じ、意図しない動作の原因となります。

例: 同名の変数の問題と回避策

Dim Count As Long
Dim Count As Worksheet  '// ← エラー: 名前が重複

'// 適切な例
Dim Counter As Long
Dim Ws As Worksheet

分かりやすい名前を付けることで、変数の役割を明確にし、コードの可読性を向上させましょう。

4. オブジェクトが存在しない場合のエラーハンドリング

ワークシートやワークブックなどをオブジェクト変数に代入する際、そのオブジェクトが存在しない場合にエラーが発生することがあります。
このような場合に備えて、「On Error ステートメント」を使用してエラーハンドリングを行い、プログラムが予期せぬ終了をしないようにしてください。

例: エラーハンドリングの例

Sub エラーハンドリング例()
    On Error Resume Next  '// エラー時にスキップ
    Dim Ws As Worksheet
    Set Ws = ThisWorkbook.Sheets("Sheet100")  '// 存在しないシートを参照
    
    If Ws Is Nothing Then
        MsgBox "シートが存在しません。", vbExclamation
    Else
        Ws.Range("A1").Value = "Hello"
    End If
    On Error GoTo 0  '// エラーハンドリングを解除
End Sub

If Ws Is Nothing Thenを使って、オブジェクト変数が正しく初期化されているかを確認しましょう。

スポンサーリンク

オブジェクト変数の使用例

ここでは、具体的なコード例を通じてオブジェクト変数の使い方を紹介します。

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。

特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

使用例1: ワークブックをオブジェクト変数として開き、操作する

ブックをオブジェクト変数「Wb」として宣言し、処理を行う方法を紹介します。

コード例 | ワークブックをオブジェクト変数として開き操作

Sub ワークブックを開く()
    Dim Wb As Workbook
    Set Wb = Workbooks.Open("C:\パス\ファイル名.xlsx")
    
    '// ここでWbを使用して操作を行う (例:シート1のA1セルに値を設定)
    Wb.Sheets("Sheet1").Range("A1").Value = "Hello, World!"
    Wb.Close SaveChanges:=True

    Set Wb = Nothing  '// オブジェクト変数を解放する

End Sub

コードの動作概要

STEP
ワークブックをオブジェクト変数として宣言

Dim Wb As Workbookでワークブック型のオブジェクト変数を宣言します。

STEP
ワークブックを開く

Workbooks.Openメソッドを使用して、指定したパスのエクセルファイルを開き、オブジェクト変数Wbに格納します。

STEP
シートの操作

Wb.Sheets("Sheet1").Range("A1").Value = "Hello, World!"で、シート「Sheet1」のセルA1に値を設定します。

STEP
保存して閉じる

Wb.Close SaveChanges:=Trueで、変更を保存し、ワークブックを閉じます。

STEP
メモリを解放

Set Wb = Nothingで、オブジェクト変数を解放し、メモリリークを防ぎます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub ワークブックを開く()
    • この行では、VBAのサブルーチン(Sub)が定義されています。
      サブルーチンは一連の操作を行うコードブロックで、「ワークブックを開く」という名前の処理を開始します。
  2. Dim Wb As Workbook
    • この行では、オブジェクト変数「Wb」が宣言されています。
      「Wb」はワークブック型(Workbook)のオブジェクト変数で、これに開くワークブックの情報が格納されます。
  3. Set Wb = Workbooks.Open(“C:\パス\ファイル名.xlsx”)
    • この行では、「Setステートメント」を使って「Wb」に指定されたパスのワークブックを代入しています。
      Workbooks.Open() メソッドは、指定したパスにあるエクセルファイルを開くためのメソッドです。
      Set を使うことで、変数「Wb」に開いたワークブックを割り当てています。

      ※Workbooks.Open() メソッドについては、別記事で解説を行っています。
       解説の最後にリンクを記載しておきますので、気になる方は合わせてご覧ください。
  4. ‘// ここでWbを使用して操作を行う (例:シート1のA1セルに値を設定)
    • このコメント行は、コード内で行われる操作の説明をしています。
      ここでは「Wb」を使用して、操作を行う場所を明示しています。
      コメントは実行されないため、説明としてコード内に残されています。
  5. Wb.Close SaveChanges:=True
    • この行では、「Wb」で開いていたワークブックを閉じています。
      SaveChanges:=True の指定により、変更が保存されてからワークブックが閉じられます。
      もし変更を保存せずに閉じたい場合は、SaveChanges:=False と指定します。

      ※Workbooks.Close() メソッドについては、別記事で解説を行っています。
       解説の最後にリンクを記載しておきますので、気になる方は合わせてご覧ください。
  6. Set Wb = Nothing ‘// オブジェクト変数を解放する
    • この行では、オブジェクト変数「Wb」に代入されていたワークブックオブジェクトを解放しています。
      Set Wb = Nothing と記述することで、変数「Wb」に格納されていたオブジェクトへの参照が切れ、メモリが解放されます。
      これを実行しないと、不要になったオブジェクトがメモリに残り続け、メモリリークを引き起こす可能性があります。
  7. End Sub
    • この行でサブルーチンが終了します。
      Sub の処理範囲を明示的に終えるために使用されます。

総括・ポイント

このコードは、指定されたパスのブックを開き、「Sheet1」にあるセルA1に「Hello, World!」という値を設定し、保存して閉じます。

使用例2: ワークシートをオブジェクト変数として参照し、操作する

シートをオブジェクト変数「Ws」として宣言し、処理を行う方法を紹介します。

コード例 | ワークシートをオブジェクト変数として参照

Sub ワークシートを参照する()
    Dim Ws As Worksheet
    Set Ws = ThisWorkbook.Sheets("Sheet1")

    '// ここでWsを使用して操作を行う (例:セルA1に値を設定)
    Ws.Range("A1").Value = "Hello, World!"

    Set Ws = Nothing  '// オブジェクト変数を解放する

End Sub

コードの動作概要

STEP
ワークシートをオブジェクト変数として宣言

Dim Ws As Worksheetでワークシート型のオブジェクト変数を宣言します。

STEP
ワークシートを参照

Set Ws = ThisWorkbook.Sheets("Sheet1")で、現在のブック内のシート「Sheet1」をオブジェクト変数Wsに割り当てます。

STEP
セルに値を設定

Ws.Range("A1").Value = "Hello, World!"で、セルA1に指定した値を入力します。

STEP
メモリを解放

Set Ws = Nothingで、オブジェクト変数を解放し、メモリリークを防ぎます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub ワークシートを参照する()
    • この行では、VBAのサブルーチン(Sub)が定義されています。
      サブルーチンは一連の操作を行うコードブロックで、「ワークシートを参照する」という名前の処理を開始します。
  2. Dim Ws As Worksheet
    • この行では、変数「Ws」が宣言されています。
      「Ws」はワークシート型(Worksheet)のオブジェクト変数で、これに特定のワークシートの情報が格納されます。
  3. Set Ws = ThisWorkbook.Sheets(“Sheet1”)
    • この行では、「Setステートメント」を使って「Ws」に現在のブック (ThisWorkbook) 内のシート「Sheet1」を代入しています。
      ThisWorkbook は現在開いているブックを指し、Sheets(“Sheet1”) はそのブック内のシート1を参照します。
      Set を使うことで、変数「Ws」に「Sheet1」を割り当てています。
  4. ‘// ここでWsを使用して操作を行う (例:セルA1に値を設定)
    • このコメント行は、コード内で行われる操作の説明をしています。
      ここでは「Ws」を使用して、操作を行う場所を明示しています。
      コメントは実行されないため、説明としてコード内に残されています。
  5. Ws.Range(“A1”).Value = “Hello, World!”
    • この行では、「Ws」で参照したシート「Sheet1」のセル「A1」 に “Hello, World!” という文字列を入力しています。
      Ws.Range(“A1”).Value では、「Ws」に割り当てられたシート 「Sheet1」のセル「A1」の値を設定します。
  6. Set Ws = Nothing ‘// オブジェクト変数を解放する
    • この行では、オブジェクト変数「Ws」に代入されていたワークシートオブジェクトを解放しています。
      Set Ws = Nothing と記述することで、変数「Ws」に格納されていたワークシートへの参照が切れ、メモリが解放されます。
      これを行うことで、不要になったオブジェクトがメモリに残るのを防ぎ、メモリリークのリスクを減らします。
  7. End Sub
    • この行でサブルーチンが終了します。
      Sub の処理範囲を明示的に終えるために使用されます。

総括・ポイント

このコードは、現在のワークブック内の「Sheet1」をオブジェクト変数「ws」に格納し、セルA1に値を入力します。

使用例3: オブジェクト変数でセル範囲を操作する

オブジェクト変数でセル範囲「Rng」として宣言し、処理を行う方法を紹介します。

コード例 | オブジェクト変数でセル範囲を操作する

Sub セル範囲を操作する()
    Dim Rng As Range
    Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A1:B2")
    
    '// ここでRngを使用して操作を行う (例:範囲内のセルに値を設定)
    Rng.Value = "Test"

    Set Rng = Nothing  '// オブジェクト変数を解放する

End Sub

コードの動作概要

STEP
セル範囲をオブジェクト変数として宣言

Dim Rng As Rangeでセル範囲型のオブジェクト変数を宣言します。

STEP
セル範囲を参照

Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A1:B2")で、現在のブック内のシート「Sheet1」のセル範囲「A1」をオブジェクト変数Rngに割り当てます。

STEP
範囲内のセルに値を設定

Rng.Value = "Test"で、範囲内の全てのセルに同じ値「Test」を一括で設定します。

STEP
メモリを解放

Set Rng = Nothingで、オブジェクト変数を解放し、メモリリークを防ぎます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub セル範囲を操作する()
    • この行では、VBAのサブルーチン(Sub)が定義されています。
      サブルーチンは一連の操作を行うコードブロックで、「セル範囲を操作する」という名前の処理を開始します。
  2. Dim Rng As Range
    • この行では、オブジェクト変数「Rng」が宣言されています。
      「Rng」はセルの範囲を表すオブジェクト変数で、特定のシート内のセル範囲を格納します。
  3. Set Rng = ThisWorkbook.Sheets(“Sheet1”).Range(“A1:B2”)
    • この行では、「Setステートメント」を使って「Rng」に現在のブック (ThisWorkbook) 内のシート「Sheet1」のセル範囲「A1:B2」を代入しています。
      ThisWorkbook.Sheets(“Sheet1”).Range(“A1:B2”) は、シート「Sheet1」のセル範囲「A1」から「B2」までを参照します。
      Set を使うことで、変数「Rng」にこのセル範囲を割り当てています。
  4. ‘// ここでRngを使用して操作を行う (例:範囲内のセルに値を設定)
    • このコメント行は、コード内で行われる操作の説明をしています。
      ここでは「Rng」を使用して、セル範囲「A1:B2」に対して操作を行うことが明示されています。
      コメントは実行されないため、説明としてコード内に残されています。
  5. Rng.Value = “Test”
    • この行では、「Rng」で参照されたセル範囲「A1:B2」に “Test” という値を設定しています。
      Rng.Value では、参照されている範囲内の全てのセルに対して同じ値を一括で設定することができます。
      ここでは「A1」から「B2」の4つのセルに “Test” が入力されます。
  6. Set Rng = Nothing ‘// オブジェクト変数を解放する
    • この行では、オブジェクト変数「Rng」に代入されていたセル範囲オブジェクトを解放しています。
      Set Rng = Nothing と記述することで、変数「Rng」に格納されていたセル範囲への参照が切れ、メモリが解放されます。
      これにより、使用済みのオブジェクトがメモリに残るのを防ぎ、メモリの効率的な利用が可能になります。
  7. End Sub
    • この行でサブルーチンが終了します。
      Sub の処理範囲を明示的に終えるために使用されます。

総括・ポイント

このコードは、「Sheet1」のセル範囲A1からB2をオブジェクト変数「Rng」に格納し、その範囲に値を入力します。

スポンサーリンク

この記事のまとめ

オブジェクト変数を理解し、効率的に使用することは、VBAプログラミングにおいて非常に重要です。

今回の記事を通して、オブジェクト変数の基本的な使い方や、その利点について学びました。それでは、記事の重要なポイントをもう一度おさらいしましょう。

ポイントのおさらい

  • オブジェクト変数とは?
    • オブジェクト変数は、ワークシートやセルなどのオブジェクト全体を参照するために使用します。
      通常の変数とは異なり、エクセルのオブジェクトを簡単に操作できるようになります。

      ⇒ 「VBAにおける各変数の違い」もう一度見る。
  • オブジェクト変数の宣言方法
    • オブジェクト変数を使用するには、「Dim」と「Set」ステートメントを組み合わせて宣言します。
      この宣言により、オブジェクトのプロパティやメソッドにアクセスしやすくなります。
      また、オブジェクト変数を使用した後は、Nothingを宣言し、メモリを解放しましょう。

      「オブジェクト変数の宣言方法」もう一度見る。
  • SetステートメントとWithステートメントを適切に使い分ける
  • オブジェクト変数を使用する際の注意ポイント
  • 具体的な使用例で実践を確認

さらに学ぶために

オブジェクト変数の基本を押さえた後は、グローバル変数や静的変数など、他の変数タイプにも目を向けてみてください。
それぞれが持つ特定の用途と利点を理解することで、VBAの操作がさらに効率的になります。

今回の記事を活用し、VBAプログラミングにおけるオブジェクト変数の使い方を身につけ、より効率的に業務をこなせるようになりましょう。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次