VBAテクニック集 VBA一覧 その他の知識 プロパティ・メソッド解説

【VBA】プロパティ一覧を取得する方法|オブジェクトの中身を一括確認する完全ガイド

ExcelVBAで開発を進めていると、
「このオブジェクトにはどんなプロパティがあるんだろう?」
「特定のオブジェクトの中身を一覧で確認したい」
と感じたことはありませんか?

プロパティ(Property)は、オブジェクトの状態や属性を表す要素です。
VBAではセル・シート・ブックなど、すべてがオブジェクトとして扱われ、それぞれに固有のプロパティが備わっています。

この記事では、VBAでプロパティの一覧を取得・確認する方法を、基本操作から実務応用までわかりやすく紹介します。
初心者がつまずきやすい「型の違い」や「エラーが出るプロパティの扱い方」についても詳しく解説します。

✅ プロパティとは?一覧を取得する前に基本を整理

まずは、プロパティの意味を簡単に振り返っておきましょう。

VBAで言う「プロパティ」とは、オブジェクト(Excelの要素)が持つ状態・情報を表すものです。

例:

Range("A1").Value = "テスト"
MsgBox Range("A1").Address

ここで「Value」や「Address」はセル(Rangeオブジェクト)のプロパティです。

  • Value:セルの値
  • Address:セルのアドレス

これらはExcel操作の基本ですが、Rangeだけでも数百種類のプロパティが存在します。
そのため、手作業で全部を調べるのは非効率。
VBAで一覧取得して、どんなプロパティが存在するかを確認するのが便利です。

参考:【VBA】メソッド一覧と使い方|初心者でも理解できる動作命令の全知識


✅ プロパティ一覧を取得する3つの方法

VBAでプロパティ一覧を確認する方法はいくつかあります。
それぞれの特徴と使い分けを理解しておくと、開発効率が格段に上がります。


【方法1】オブジェクトブラウザ(F2キー)で確認する

最も手軽な方法は、VBE(Visual Basic Editor)のオブジェクトブラウザを使うことです。

手順:

  1. Excelで「Alt + F11」を押してVBEを開く
  2. 「F2」キーを押して「オブジェクトブラウザ」を開く
  3. 検索欄に「Range」など調べたいオブジェクト名を入力

右側に「プロパティ」「メソッド」「イベント」が一覧表示されます。

プロパティの一覧を目視で確認でき、どんな情報を持っているかがひと目で分かります。
ただし、この方法では実際の値は取得できません。


【方法2】IntelliSense(入力補完機能)で確認する

コード入力時に「.(ドット)」を入力すると、
そのオブジェクトで使えるプロパティ・メソッド一覧が自動的に表示されます。

例:

Range("A1").

この状態で表示されるリストに、
「Value」「Font」「Interior」「Address」などが並びます。

特徴:

  • 実際にコードで使えるプロパティを確認できる
  • 型宣言をしていない場合は候補が出ない(例:Dim r As Rangeが必要)
  • 候補リストを確認するだけなら、エラーの心配がない

開発中の確認には最も便利な方法です。


【方法3】VBAコードでプロパティ一覧と値を取得する

実際のオブジェクトのプロパティ名とその値を一覧で出力するには、VBAコードを使います。
ここでは、TypeNameCallByNameを使った手法を紹介します。


✅ プロパティ一覧をVBAで自動取得するコード例

次のサンプルでは、Rangeオブジェクトのプロパティ名と値を出力します。

サンプルコード①:Rangeオブジェクトのプロパティ一覧を出力

Sub ShowRangeProperties()
    Dim obj As Object
    Dim prop As Variant
    Dim ws As Worksheet
    Dim i As Long
    
    ' 出力用シートを用意
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "PropertyList"
    
    ' 対象セル
    Set obj = Range("A1")
    
    i = 1
    On Error Resume Next
    ' プロパティ一覧を取得(代表的なプロパティ名)
    For Each prop In Array("Address", "Row", "Column", "Value", "Text", "Font", "Interior", "Formula", "NumberFormat")
        ws.Cells(i, 1).Value = prop
        ws.Cells(i, 2).Value = CallByName(obj, prop, VbGet)
        i = i + 1
    Next prop
    On Error GoTo 0
    
    ws.Columns("A:B").AutoFit
    MsgBox "プロパティ一覧をシートに出力しました。"
End Sub

出力結果(例):

プロパティ名
Address$A$1
Row1
Column1
Valueテスト
Textテスト
Font[Object]
Interior[Object]
Formula
NumberFormatGeneral

ポイント:

  • CallByName関数でオブジェクトのプロパティを動的に呼び出せます。
  • エラーを避けるためにOn Error Resume Nextで囲うのが安全。
  • FontInteriorのようなサブオブジェクト型は「[Object]」と表示されます。

✅ サンプルコード②:WorkbookやWorksheetのプロパティ一覧取得

WorkbookWorksheetのような上位オブジェクトも同様に確認できます。

Sub ShowWorkbookProperties()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim prop As Variant
    Dim i As Long
    
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "BookProperties"
    Set wb = ThisWorkbook
    
    i = 1
    On Error Resume Next
    For Each prop In Array("Name", "Path", "FullName", "Saved", "ReadOnly", "Sheets", "HasVBProject", "ProtectStructure")
        ws.Cells(i, 1).Value = prop
        ws.Cells(i, 2).Value = CallByName(wb, prop, VbGet)
        i = i + 1
    Next prop
    On Error GoTo 0
    
    ws.Columns("A:B").AutoFit
    MsgBox "Workbookのプロパティ一覧を出力しました。"
End Sub

出力結果(例):

プロパティ名
NameBook1.xlsm
PathC:\Users\Excel\
FullNameC:\Users\Excel\Book1.xlsm
SavedTrue
ReadOnlyFalse
HasVBProjectTrue
ProtectStructureFalse

このように、Workbookオブジェクトでも主要な情報を一覧で確認できます。
特にブック管理マクロを作るときに役立ちます。

参考:【VBA】ファイルを選択して開く方法|Application.GetOpenFilenameとWorkbooks.Openの実践例




✅ 実務応用①:指定シートのプロパティを自動取得してドキュメント化

企業やチーム開発では、シート構成や設定情報を一覧化しておきたいケースがあります。
以下のサンプルでは、すべてのシートのプロパティ(名前・保護状態・可視性など)を一括取得します。

Sub GetSheetProperties()
    Dim ws As Worksheet
    Dim info As Worksheet
    Dim i As Long
    
    Set info = ThisWorkbook.Sheets.Add
    info.Name = "SheetInfo"
    
    info.Range("A1:D1").Value = Array("シート名", "可視性", "保護状態", "インデックス")
    i = 2
    
    For Each ws In ThisWorkbook.Worksheets
        info.Cells(i, 1).Value = ws.Name
        Select Case ws.Visible
            Case xlSheetVisible: info.Cells(i, 2).Value = "表示"
            Case xlSheetHidden: info.Cells(i, 2).Value = "非表示"
            Case xlSheetVeryHidden: info.Cells(i, 2).Value = "完全非表示"
        End Select
        info.Cells(i, 3).Value = ws.ProtectContents
        info.Cells(i, 4).Value = ws.Index
        i = i + 1
    Next ws
    
    info.Columns("A:D").AutoFit
    MsgBox "シートのプロパティ一覧を出力しました。"
End Sub

出力結果:

シート名可視性保護状態インデックス
Sheet1表示False1
Sheet2非表示True2

このように「どのシートが非表示になっているか」「保護されているか」を即座に一覧化できます。
開発者や運用担当者にとって非常に便利な自動ドキュメント生成マクロです。


✅ 実務応用②:セルの書式やフォント情報を一覧取得

特定の範囲内で、文字色・背景色・フォントサイズなどを一括で確認したい場合もあります。

Sub GetFormatProperties()
    Dim ws As Worksheet
    Dim rng As Range
    Dim c As Range
    Dim i As Long
    
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "FormatInfo"
    
    ws.Range("A1:E1").Value = Array("セル", "値", "文字色", "背景色", "フォントサイズ")
    i = 2
    
    For Each c In Range("A1:A10")
        ws.Cells(i, 1).Value = c.Address
        ws.Cells(i, 2).Value = c.Value
        ws.Cells(i, 3).Value = c.Font.Color
        ws.Cells(i, 4).Value = c.Interior.Color
        ws.Cells(i, 5).Value = c.Font.Size
        i = i + 1
    Next c
    
    ws.Columns("A:E").AutoFit
    MsgBox "書式プロパティを一覧出力しました。"
End Sub

このコードは、セルの見た目を数値(色コードなど)として一覧化します。
デザインチェックや帳票整形時の品質確認にも有効です。


✅ プロパティ一覧取得で注意すべきポイント

プロパティの一覧を自動取得する際は、いくつかの注意点があります。

1. すべてのプロパティが取得できるわけではない

一部のプロパティは「取得専用」「設定専用」「内部専用」となっており、
CallByNameで参照しようとするとエラーになります。
On Error Resume Nextでスキップ処理を入れておくのが安全です。


2. オブジェクト型のプロパティは値ではなく参照が返る

FontInteriorなどはオブジェクト(サブ階層)を返すため、
そのままでは値を取得できません。
必要に応じて .Color.Name など下位プロパティを指定します。

参考:【VBA】Range型とは?セル操作の基本を理解して自在に扱う方法


3. ループ回数が多い場合は速度対策が必要

大量のプロパティを取得すると、Excelの画面更新で処理が遅くなります。
次のコードを冒頭に入れると高速化できます。

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

処理後にTruexlAutomaticへ戻すことを忘れずに。


✅ 開発効率を上げる補助ツール的使い方

プロパティ一覧取得マクロは、開発現場でデバッグや調査ツールとしても利用価値が高いです。

  • 不具合のあるオブジェクトの「状態」を一覧化して原因特定
  • シートやセルの「表示形式」「保護状態」を一括確認
  • テンプレートの「初期設定ドキュメント」を自動生成

開発チーム内で共有することで、属人的なトラブル対応を防ぐこともできます。


■ まとめ:プロパティ一覧取得でVBAの理解が深まる

  • プロパティとは、オブジェクトの状態や属性を表すもの
  • 一覧取得には「オブジェクトブラウザ」「IntelliSense」「VBAコード出力」がある
  • CallByNameを使うと、任意のプロパティを動的に取得できる
  • WorkbookWorksheetRangeなど主要オブジェクトのプロパティを自動出力できる
  • 実務では、保護状態・書式・レポート設定などをドキュメント化するのに有効

プロパティ一覧を取得できるようになると、VBAの「オブジェクト構造」が明確に見えるようになります。
これは、単なるマクロ作成から一歩進んだ“開発者的視点”への第一歩です。

ぜひこの記事のコードを活用して、Excel内部の仕組みを「見える化」する開発スタイルを取り入れてみてください。

-VBAテクニック集, VBA一覧, その他の知識, プロパティ・メソッド解説