はじめに
データベースのセルに入っている内容を、リストビュー、ツリービューの2つを使って取得する。
標準では、リストビュー、ツリービューは部品に入っていないので、その他のコントロールから選ぶこと。
やり方は2通りあるが、エクセルメニューの開発>Visual Basicをクリックして編集画面を出し、ユーザーフォームを出すところまでは共通である。
ユーザーフォームをクリックしてから編集画面のメニューのツールから選ぶ方法がある。
もうひとつはユーザーフォームと一緒に出てくるツールボックスのコントロール画面の余白を右クリックして出す方法がある。
このようにすると、ツールボックスのコントロールに、リストビューとツリービューが表示される。
後は、ユーザーフォーム1にマルチページをドラック&ドロップをして、その上にそれぞれのページにリストビューとツリービュー、そしてコマンドボタンをドラック&ドロップをすればいい。
これで準備は終わりである。
リストビューの作成
ユーザーフォームーイニシャライズ
With ListView1
.View = lvwReport
.LabelEdit = lvwManual
.HideSelection = False
.AllowColumnReorder = True
.FullRowSelect = True
.Gridlines = True
.ColumnHeaders.Add , "氏名", "氏名"
.ColumnHeaders.Add , "年齢", "年齢"
.ColumnHeaders.Add , "出身地", "出身地"
End With
.view=lvwReportはレポート形式での表示であり、一覧とサブアイテムを表示する形式を設定している。他には、lvwIcon(アイコンで表示)、lvwList(リスト形式で表示)、lvwSmallIcon(小さいアイコンで表示)の3通りある。
.LabelEdit = lvwManualはラベルをコードで編集するという意味である。これをlvwAutomaticにすれば選択しただけで編集状態になる。この場合は、項目を選択しただけでは編集できない状態に設定してある。
.HideSelection = Falseは、別のコントロールにフォーカスを移動したときに選択状態を解除できないように設定してある。もちろんTrueであれば解除できる。
.AllowColumnReorder = Trueは、実行中に列幅を変更できるように設定してある。Falseならば変更できない。
.FullRowSelect = Trueは行全体が選択できるように設定してある。Falseならば選択できない。
.Gridlines = Trueはグリッド線を表示している。Falseならばグリッド線は表示しない。
.ColumnHeaders.Add の3行は、タブ情報を設定している。
コマンドボタンへの割り付け
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 2 To lrn
With ListView1.ListItems.Add
.Text = Cells(i, 1)
.SubItems(1) = Cells(i, 3)
.SubItems(2) = Cells(i, 4)
End With
Next i
End Sub
ListView1.ListItems.Addは、ListViewへListItemを追加するという意味である。
リストビューを表形式で使うとき、リストビューのデータは左端と2列目以降にわかれて管理される。
データは1行単位で追加していく。
.Text = Cells(i, 1)は左端に表示されるデータを意味し、Textプロパティで操作する。
2列目以降は.SubItemsで管理し、インデックスは2列目が1、3列目が2となる。
ツリービューの作成
ユーザーフォームーイニシャライズ
With TreeView1
.Indentation = 14
.LabelEdit = tvwManual
.BorderStyle = ccNone
.HideSelection = False
.LineStyle = tvwRootLines
End With
.Indentation はインデントの幅を設定している。
.LabelEditは項目を選択しただけで編集できないように設定してある。
.BorderStyleは周囲の線を設定している。
.HideSelectionは別のコントロールにフォーカスを移動したときに選択状態を解除できないように設定している。
.LineStyleは線のスタイルを設定している。
コマンドボタンへの割り付け
Private Sub CommandButton2_Click()
Dim i As Integer
For i = 2 To lrn
TreeView1.Nodes.Add Key:=Cells(i, 1).Address, Text:=Cells(i, 1)
TreeView1.Nodes.Add Relative:=Cells(i, 1).Address, _
Relationship:=tvwChild, Key:=Cells(i, 3).Address, _
Text:="年齢:" & Cells(i, 3)
TreeView1.Nodes.Add Relative:=Cells(i, 1).Address, _
Relationship:=tvwChild, Key:=Cells(i, 4).Address, _
Text:="出身地:" & Cells(i, 4)
Next i
End Sub
TreeView1.Nodes.Add Key:=Cells(i, 1).Address, Text:=Cells(i, 1)はA列のデータをツリービューの親ノードとして登録している。
TreeView1.Nodes.Add Relative:=Cells(i, 1).Address, _
Relationship:=tvwChild, Key:=Cells(i, 3).Address, _
Text:="年齢:" & Cells(i, 3)
はC列(3列目)のデータをA列の親ノードに対する子ノードとして登録している。
TreeView1.Nodes.Add Relative:=Cells(i, 1).Address, _
Relationship:=tvwChild, Key:=Cells(i, 4).Address, _
Text:="出身地:" & Cells(i, 4)
は、D列(4列目)のデータをA列の親ノードに対する子ノードとして登録している。
コードの全容
標準モジュール
Option Explicit
Option Base 1
Public lcr As Integer, lrn As Integer
ーーーーーーーーーーーーーーーーーーーーーーー
Sub actionButton()
UserForm1.Show
End Sub
ーーーーーーーーーーーーーーーーーーーーーーー
Public Sub lastCellRow()
lcr = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
End Sub
ーーーーーーーーーーーーーーーーーーーーーーー
Public Sub lastRowNum()
lrn = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
ユーザーフォーム1のコード
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
Call lastCellRow
Call lastRowNum
With ListView1
.View = lvwReport
.LabelEdit = lvwManual
.HideSelection = False
.AllowColumnReorder = True
.FullRowSelect = True
.Gridlines = True
.ColumnHeaders.Add , "氏名", "氏名"
.ColumnHeaders.Add , "年齢", "年齢"
.ColumnHeaders.Add , "出身地", "出身地"
End With
With TreeView1
.Indentation = 14
.LabelEdit = tvwManual
.BorderStyle = ccNone
.HideSelection = False
.LineStyle = tvwRootLines
End With
UserForm1.MultiPage1.Value = 0
End Sub
ーーーーーーーーーーーーーーーーーーーーーーー
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 2 To lrn
With ListView1.ListItems.Add
.Text = Cells(i, 1)
.SubItems(1) = Cells(i, 3)
.SubItems(2) = Cells(i, 4)
End With
Next i
End Sub
ーーーーーーーーーーーーーーーーーーーーーーー
Private Sub CommandButton2_Click()
Dim i As Integer
For i = 2 To lrn
TreeView1.Nodes.Add Key:=Cells(i, 1).Address, Text:=Cells(i, 1)
TreeView1.Nodes.Add Relative:=Cells(i, 1).Address, _
Relationship:=tvwChild, Key:=Cells(i, 3).Address, _
Text:="年齢:" & Cells(i, 3)
TreeView1.Nodes.Add Relative:=Cells(i, 1).Address, _
Relationship:=tvwChild, Key:=Cells(i, 4).Address, _
Text:="出身地:" & Cells(i, 4)
Next i
End Sub
サイトご利用方法
次のページ・前のページを利用するよりも、グローバルメニュー(ヘッダー部分にある項目)・サブメニュー記事の項目をクリックしていただければ、その項目の全体像が一目でみることができ、クリックすればそのサイトへ飛びます。
google、yahoo、Bingなどで検索する場合、検索ワードは先頭に、孤立じじい、と入力しその後に、グローバルメニュー・サブメニュー記事のどれかひとつの項目を入力すると、その検索サイトが上位表示されます。