VBAオブジェクト
In this Article
Excel VBAのオブジェクトは、コードとデータで構成される1つの「実体」を指します。Excelアプリケーション自体も、ワークブック、ワークシート、セル範囲、図形と同様にオブジェクトです。すべてのオブジェクトは、関連するプロパティとメソッドを持っています。オブジェクトは他のオブジェクトを含むことができ、同じExcelオブジェクトのグループを参照するためにコレクションオブジェクトが使用されます。
このチュートリアルでは、一般的に使用されるExcelオブジェクトをいくつか見ていきます。
Applicationオブジェクト
Applicationオブジェクトは、Excelアプリケーション全体を指します。Application オブジェクトはワークブックオブジェクトを含んでいます。
以下のコードでは、ApplicationオブジェクトのWindowStateプロパティを使用して、Excelウィンドウを使用可能な最大サイズに設定しています。
Sub MaximizingTheExcelWindow()
Application.WindowState = xlMaximized
End Sub
Workbooksオブジェクト
Workbooksオブジェクトは、現在開いているすべてのExcelワークブックのコレクションです。
以下のコードでは、Workbooks.Addメソッドを使用して新しいワークブックを作成し、それをコレクションに追加しています。
Sub AddingANewWorkbookToTheWorkbooksCollection()
Workbooks.Add
End Sub
Workbooksコレクション内の個々のワークブックには、そのインデックス番号または名前を通してアクセスできます。つまり、Workbooks(“ExcelWB”)を使用すれば、ExcelWbというワークブックを参照することができます。
Workbookオブジェクト
Workbookオブジェクトは、Workbooks コレクションの一部です。Workbookオブジェクトは、Worksheetsコレクション(ワークシート)とSheetsコレクション(ワークシート、チャートシート、マクロシート)を含んでいます。ActiveWorkbook オブジェクトは、アクティブになっているワークブックを指します。 以下のコードでは、ActiveWorkbook.Saveメソッドを使って、現在アクティブなワークブックを保存しています。
Sub SavingTheWorkbook()
ActiveWorkbook.Save
End Sub
Sheetsオブジェクト
Sheetsオブジェクトは、ワークブック内のすべてのワークシート、チャートシート、マクロシートのコレクションを指します。次のコードは、Sheets.Addメソッドを使って、ExtraSheetという新しいワークシートを、ワークブックの最後のワークシートの後に追加しています。
Sub AddingANewSheet()
ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(Worksheets.Count), _
Count:=1, Type:=xlWorksheet).Name = "ExtraSheet"
End Sub
Sheets.Addメソッドの構文に注意してください。
Sheets.Add(Before,After,Count,Type)
– Beforeはオプションで、新しいシートが既存のシートの前に追加されることを指定します。
– After はオプションで、新しいシートが既存のシートの後に追加されるように指定します。
– Count はオプションで、追加するシートの枚数を指定します。
– Type はオプションで、追加するシートの種類を指定します。xlWorksheetは新しいワークシートを、xlChartは新しいチャートシートを、xlExcel4MacroSheetまたはxlExcel4IntlMacroSheetは新しいマクロシートを追加します。空白の場合、デフォルトのxlWorksheetが使用されます。
Sheetsコレクション内の個々のシートには、そのインデックス番号または名前からアクセスできます。つまり、Sheets(“SheetOne”)を使用すれば、SheetOneというワークシートを参照することができます。
Worksheetsオブジェクト
Worksheetsオブジェクトは、ワークブック内のすべてのワークシートのコレクションを参照します。以下のコードでは、Worksheets.Addメソッドを使用して、新しいワークシートを追加しています。
Sub AddingANewSheet()
Worksheets.Add
End Sub
Worksheetsコレクション内の個々のシートには、そのインデックス番号や名前を使ってアクセスすることができます。つまり、Worksheets(“SheetTwo”)を使えば、SheetTwoというWorksheetを参照することができます。
Worksheetオブジェクト
Worksheetオブジェクトは、Worksheets コレクションの一部です。Worksheetオブジェクトには、Range オブジェクトやその他のオブジェクトが含まれています。ActiveSheet オブジェクトは、アクティブになっているシートを参照します。 次のコードは、アクティブなシートのページの向きをランドスケープに変更します。
Sub ChangingOrientationToLandscape()
ActiveSheet.PageSetup.Orientation = xlLandscape
End Sub
SheetオブジェクトはPageSetupオブジェクトを含み、そのOrientationプロパティがxlLandscapeに設定されたことに注目してください。
Range オブジェクト
Range オブジェクトは、ワークシート内の 1 つのセルまたはセルの集合を参照することができます。次のコードは、Range.Selectメソッドを使って、セルA1:B1を選択する方法を示しています。
Sub SelectingARange()
Range("A1:B1").Select
End Sub
Shapesオブジェクト
Shapesオブジェクトは、ワークシートにあるすべての図形のコレクションです。以下のコードでは、ActiveSheetにあるすべての図形を選択します。
Sub SelectingAllTheShapes()
ActiveSheet.Shapes.SelectAll
End Sub
Shapeオブジェクト
Shapeオブジェクトは、Shapesコレクションの一部です。次のコードは、丸みを帯びた四角形のシェイプを作成し、ShapeオブジェクトのNameプロパティを設定するものです。
Sub UsingTheShapeObject()
With Worksheets(1).Shapes.AddShape(msoShapeRoundedRectangle, 200, 100, 80, 80)
.Name = "丸みを帯びた長方形"
End With
End Sub
Excel VBAのオブジェクトモデル
ExcelのVBAオブジェクトモデルは、Excelで使用できるすべてのオブジェクトの階層を記述しています。例えば、Workbooksオブジェクトを使用して、他のすべてのオブジェクトを間接的または直接的に参照することができます。次のコードは、階層構造を使用してセルA1を選択する方法を示しています。
Sub UsingTheHierachicalStructure()
Workbooks("Book1").Worksheets("Sheet1").Range("A1").Select
End Sub
オブジェクト変数の宣言と代入
DimキーワードとSetキーワードを使って、オブジェクトを変数に宣言し、代入することができます。 たとえば、以下のようになります。
Dim ws as worksheet
Set ws = ActiveWorkbook.ActiveSheet
次のコードは、Rangeオブジェクトを宣言し、変数に代入する方法を示しています。
Sub AssigningARangeToAVariable()
Dim rngOne As Object
Set rngOne = Range("A1:C1")
rngOne.Font.Bold = True
With rngOne
.Font.Bold = True
.Font.Name = "Calibri"
.Fond.Size = 9
.Font.Color = RGB(35、78、125)
.Interior.Color = RGB(205, 224, 180)
.Borders(xlEdgeBottom).LineStyle = xlContinuous
End With
End Sub
結果は次のようになります。
VBAを使いこなすには、オブジェクトの働きを理解することが不可欠です。インタラクティブなVBAチュートリアルで、より深く学ぶことができます。