VBAユーザーフォームにTreeView(ツリービュー)を表示する方法


VBAのユーザーフォームで、フォルダ構造のように階層的な情報を表示したいときに便利なのが「TreeView(ツリービュー)」です。このページでは、設定方法・コード例・表示トラブル対処法まで、初心者にもわかりやすく図や表を交えて解説します。


目次

  1. TreeViewとは?
  2. TreeViewの追加手順(疑似図付き)
  3. ノード追加のコード
  4. ノードクリック処理
  5. よくあるトラブルとその解決法(OCX登録)
  6. まとめ(表)

1. TreeViewとは?

TreeViewは、以下のようなツリー構造の表示ができるコントロールです。

+ 顧客管理
   ├─ 顧客A
   └─ 顧客B
+ 商品管理
   ├─ 商品X
   └─ 商品Y

使用シーン例:

  • ファイル・フォルダのような階層表示
  • カテゴリ別メニュー表示
  • データ分類の整理と閲覧

2. TreeViewの追加手順

ステップ1:参照設定を有効化

  1. Alt + F11 でVBAエディターを開く
  2. メニューの「ツール」→「参照設定」を開く
  3. 下記ライブラリにチェックを入れる:
☑ Microsoft Windows Common Controls 6.0 (SP6)

(見つからない場合はOCXの登録が必要。後述)


ステップ2:フォームにTreeViewを配置

ツールボックスに「TreeView」が追加されているので、ユーザーフォーム上にドラッグ&ドロップで配置します。

ツールボックスの例(疑似表示):

[Label] [TextBox] [CommandButton]
[ListBox] [ComboBox] [TreeView]

3. ノードを追加するコード例

フォームの初期化時にノード(項目)を追加できます。

Private Sub UserForm_Initialize()
    Dim parentNode As Node

    ' 親ノード追加
    Set parentNode = TreeView1.Nodes.Add(, , "root", "メニュー")

    ' 子ノード追加
    TreeView1.Nodes.Add "root", tvwChild, , "顧客管理"
    TreeView1.Nodes.Add "root", tvwChild, , "商品管理"
End Sub

表示イメージ:

+ メニュー
   ├─ 顧客管理
   └─ 商品管理

4. ノードクリック時の処理

ユーザーがノードをクリックしたときのイベント処理です。

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    MsgBox "選択されたノード: " & Node.Text
End Sub

5. TreeViewが表示されない場合(OCXの登録)

TreeViewは MSCOMCTL.OCX を使用します。PC環境によっては未登録のため表示されないことがあります。

Windows 64bitの場合の対処法:

  1. 以下の場所を確認:
     C:\Windows\SysWOW64\MSCOMCTL.OCX
  2. 管理者としてコマンドプロンプトを開き、次を実行:
regsvr32 C:\Windows\SysWOW64\MSCOMCTL.OCX

「登録に成功しました」と表示されればOKです。


6. まとめ(使用のポイント)

以下はTreeViewの概要とポイントを表形式で整理したものです。

項目 内容
コントロール名 TreeView
主な機能 階層構造の表示(ノードの追加・削除・選択)
使い所 メニュー表示、分類データ表示、ファイル構造風UIなど
注意点 参照設定が必要/OCX登録が必要なことも
イベント処理 NodeClickでノード選択時の動作を記述

おわりに

TreeViewは、複雑な情報を**「見やすく、整理して」**表示するのに最適です。ノードの追加やクリックイベントも簡単に扱えるため、業務アプリケーションや帳票メニューにも応用できます。


次回は: チェックボックス付きTreeView、アイコン表示付きTreeViewなど「応用編」もご紹介予定!


コメント

タイトルとURLをコピーしました