4)VBAの構文 オブジェクト式

目次

4-1)オブジェクト式

4-1-1)オブジェクト式の書き方

VBA(Visual Basic for Applications)におけるオブジェクト式は、オブジェクト指向プログラミングの一部であり、Excelや他のOfficeアプリケーションの機能やデータにアクセス、操作するために使用されます。

オブジェクト式は、オブジェクトとそのプロパティ、メソッド、イベントを組み合わせて記述します。

VBAでのオブジェクトは、Excelのワークブック、ワークシート、セル、グラフ、範囲など、特定の要素を表すもので、それぞれが固有のプロパティ(属性)とメソッド(操作)を持っています。

プロパティとメソッド

プロパティ: オブジェクトの属性や状態を表します。読み取り専用または読み書き可能です。
メソッド : オブジェクトに対して実行できる操作やアクションです。

オブジェクト式の基本構造

オブジェクトとはVBAのデータ型のひとつです。

ブックやシート、フォントなど、複数の情報を持っている操作対象がオブジェクトと呼ばれます。

また、VBAではセルのことを「Rangeオブジェクト」と呼んでいます。

オブジェクト式は、オブジェクト名に続けてドット(.)を使用し、プロパティやメソッドを呼び出します。

 オブジェクト.プロパティ
オブジェクト.メソッド

Range(“A1”).Value = 10

プロパティ

プロパティはオブジェクトの属性や特性を表します。

例えば、Excelのセルの値やフォントの色などです。

プロパティの例

'ワークシートの名前を変更する
Dim ws As Worksheet
Set ws =ThisWorkbook.Sheets("Sheet1")
ws.Name = "NewName"
' セルA1の値を設定
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Range("A1").Value = "Hello, World!"

メソッド

メソッドはオブジェクトに対して実行できるアクションです。

例えば、ワークシートのコピーやグラフの作成などです。

メソッドの例

'セルの値をクリアする
Dim rng As RangeSet
 rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
 rng.ClearContents

オブジェクト変数

オブジェクト変数を使用して、オブジェクトへの参照を保持し、コードをより読みやすく、効率的にすることができます。

オブジェクト変数の例

この例では、ws というオブジェクト変数を使用してシート1を参照し、セルA1とA2の値を設定していま

Dim ws As WorksheetSet
ws = ThisWorkbook.Sheets("Sheet1")
ws.Range("A1").Value = 10
ws.Range("A2").Value = 20
'シートを最後のシートの後ろにコピーする
Dim ws As WorkSheet
 set ws = WorkSheet(1)
 ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

4-1-2)オブジェクトの階層

VBAのオブジェクトは階層構造になっており、上位のオブジェクトを通じて下位のオブジェクトにアクセスします。

例えば、Excelのアプリケーションオブジェクト>ワークブック>ワークシート>セル範囲へとアクセスします。

階層の例

例えば、Excelでは Application > Workbook > Worksheet > Range という階層があります。

Application.Workbooks(“Book1.xlsx”).WorkSheets(“Sheet1”).Range(“A1”).Value = 10

4-1-3)階層構造の特例

ブックとシートは省略可能

 Range(“A1”).Value = 10

4-1-4)コレクション

コレクションとは、複数のオブジェクトを集めたものです。

コレクションは名前の後に複数形の「s」がついています。

ワークブックのオブジェクト名は「Workbook」ですが、コレクション名は「Workbooks”xxx.clsx”」となります。

セルのオブジェクト名は「Cell」ですが、コレクション名は「Cells(1,1)となります。

なお、例外としてVBAでセルを表すRangeは、範囲を示すためコレクションになっても複数形にはなりません。

Application.Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1").Value = 10
Application.Workbooks(1).Sheets("Sheet1").Range("A1").Value = 10

Application.Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1").Value = 10
Application.Workbooks(1).Sheets(1).Range("A1").Value = 10

4-1-5)セルの表し方

Rangeオブジェクトを使用する方法

単一セルを指定

Range("A1").Value = 10 ' セルA1の値を10に設定しています。
Cells(1, 1) →  Cells(1, "A")    ' A1セル
Cells(2, 3) →  Cells(2, "C")    ' C2セル

セル範囲を指定

Range("A1")
Range("A1:B2")
Range("A1,B2")
Range("A1:B2").Value = 20  'セルA1からB2の範囲全体の値を20に設定しています。

セル範囲の特定のセルにアクセス

Range("A1:B2").Cells(1, 1).Value = 30  ' A1セル 
Range("A1:B2").Cells(2, 2).Value = 40  ' B2セル

Cellsプロパティを使用する方法

Cells(1, 1).Value = 50  ' A1セル
Cells(2, 3).Value = 60 ' C2セル
Cells(1, 1) →  Cells(1, "A")  ' A1セル
Cells(2, 3) →  Cells(2, "C")  ' C2セル

CellsとRangeの組み合わせ

Range(Cells(1, 1), Cells(3, 3)).Value = 70  ' A1からC3の範囲

名前付き範囲を指定

Named Rangeを使用する方法
Range("MyNamedRange").Value = 80

Offsetプロパティを使用する方法

Range("A1").Offset(1, 1).Value = 90  ' B2セル

CellsプロパティとOffsetプロパティの組み合わせ

Cells(1, 1).Offset(1, 1).Value = 100  ' B2セル

4-1-6)シートの指定

 Worksheets(1)
 Worksheets("sheet1")

4-1-6)ブックの指定方法

Workbooks("xxxxx.exlx")

4-1-7) Withステートメント

With ステートメントを使用すると、同じオブジェクトに対して複数の操作を行う場合にコードを簡略化できます。

Withステートメントの例

With ThisWorkbook.Sheets("Sheet1").Range("A1") 
  .Value = 10
   .Font.Bold = True
   .Interior.Color = RGB(255, 0, 0)
End With
よかったらシェアしてね!
目次