VBAでよく利用する、拡張コンポーネント。
主にディクショナリ、ファイルシステム、DTPicker等を使う備忘録です。
筆者はBASICからプログラミングに入りましたが、C系の言語が長かったため、本文ではCall文を使用しております。
Call文を利用しない形式でも利用できます。
登録情報の格納場所
各コンポーネントはレジストリに登録されています。
コンピューター\HKEY_CLASSES_ROOT
例:DTPicker
コンピューター\HKEY_CLASSES_ROOT\MSComCtl2.DTPicker
VBA関連
一覧
コンポーネント名 | クラス名 | コンポーネントID |
---|---|---|
ラベル | MSForms.Label | Forms.Label.1 |
テキストボックス | MSForms.TextBox | Forms.TextBox.1 |
コンボ ボックス | MSForms.ComboBox | Forms.ComboBox.1 |
リスト ボックス | MSForms.ListBox | Forms.ListBox.1 |
チェックボックス | MSForms.CheckBox | Forms.CheckBox.1 |
オプションボタン | MSForms.OptionButton | Forms.OptionButton.1 |
トグルボタン | MSForms.ToggleButton | Forms.ToggleButton.1 |
フレーム | MSForms.Frame | Forms.Frame.1 |
コマンド ボタン | MSForms.CommandButton | Forms.CommandButton.1 |
タブ ストリップ | MSForms.TabStrip | Forms.TabStrip.1 |
マルチページ | MSForms.MultiPage | Forms.MultiPage.1 |
スクロールバー | MSForms.ScrollBar | Forms.ScrollBar.1 |
スピン ボタン | MSForms.SpinButton | Forms.SpinButton.1 |
イメージ | MSForms.Image | Forms.Image.1 |
文法(動的作成)
オブジェクトは、UserForm,Frame,MultiPageなどコンポーネントを配置できるもの
変数に代入する場合
' 生成
set 変数 = オブジェクト.Controls.Add(コンポーネントID)
' 利用
変数.プロパティ...
' 解放
オブジェクト.Controls.Remove(変数.Name)
Dim labelSample As MSForms.Label
Private Sub UserForm_Initialize()
Set labelSample = Me.Controls.Add("Forms.Label.1")
labelSample.Caption = "ラベルサンプル"
End Sub
Private Sub UserForm_Terminate()
Call Me.Controls.Remove(labelSample.Name)
End Sub
オブジェクトで管理する場合
' 生成
Call オブジェクト.Controls.Add(コンポーネントID,名前)
' 利用
オブジェクト.Controls(名前).プロパティ...
' 解放
Call オブジェクト.Controls.Remove(名前)
Private Sub UserForm_Initialize()
Call Me.Controls.Add("Forms.Label.1", "CreatedLabel")
Me.Controls("CreatedLabel").Caption = "ラベルサンプル"
End Sub
Private Sub UserForm_Terminate()
Call Me.Controls.Remove("CreatedLabel")
End Sub
VBScript関連
VBScript(?)に実装されている機能
一覧
クラス名 | コンポーネントID | 備考 |
---|---|---|
Dictionary | Scripting.Dictionary | |
Drive | Scripting.FileSystemObject | GetDrive等で取得 |
File | Scripting.FileSystemObject | FilesからのForEach等で取得 |
FileSystem | Scripting.FileSystemObject | ファイル関係の基幹 |
Folder | Scripting.FileSystemObject | GetFolder等で取得 |
文法(動的作成)
Private myDict As Object
Private Sub UserForm_Initialize()
Set myDict = CreateObject("Scripting.Dictionary")
Call myDict.Add(1, "Data1")
End Sub
Private Sub UserForm_Terminate()
Set myDict = Nothing
End Sub
VB6関連
入手先
VB6コンポーネントは、通常のOfficeインストール時には登録されていません。
別途入手・インストールする必要があります。
筆者は以下を利用しました。他にもVectorなどで他のソフトウェアもありますので、ご自由に使ってください。
「Visual Basic 6.0 Service Pack 6 Runtime Set Version.1.35(作:Tohさん、v6s6r135.zip)」
一覧
コンポーネント名 | クラス名 | コンポーネントID |
---|---|---|
動画再生(だったと思う) | MSComCtl2.Animation | MSComCtl2.Animation.2 |
コンボボックス型カレンダー | MSComCtl2.DTPicker | MSComCtl2.DTPicker.2 |
スクロールバー | MSComCtl2.FlatScrollBar | MSComCtl2.FlatScrollBar.2 |
カレンダー | MSComCtl2.MonthView | MSComCtl2.MonthView.2 |
上下ボタン | MSComCtl2.UpDown | MSComCtl2.UpDown.2 |
文法(動的作成)
通常のコンポーネントと同じです
他にも、多数のクラスが登録されていると思いますが、そちらは適宜追加したいと思います。