Excel窗體控件動態添加窗體控件

職場菊菊子 2024-03-10 05:54:34

在vba中也可以使用窗體。

在窗體的設計狀態下,可以添加各種控件。

有時候我們希望通過vba代碼在窗體中動態的添加控件,而不是事先在窗體中添加控件再寫代碼。

在vba中可以使用UserForm對象的Controls.Add方法動態添加控件,它的語法如下:

Set Control = object.Add( ProgID [, Name [, Visible]])

其中ProgID參數爲要添加的控件的程序標識符,Name參數爲要添加的控件的名稱, Visible參數設置該控件是否可見。

常見的控件的ProgID如下:

CheckBox

Forms.CheckBox.1

ComboBox

Forms.ComboBox.1

CommandButton

Forms.CommandButton.1

Frame

Forms.Frame.1

Image

Forms.Image.1

Label

Forms.Label.1

ListBox

Forms.ListBox.1

MultiPage

Forms.MultiPage.1

OptionButton

Forms.OptionButton.1

ScrollBar

Forms.ScrollBar.1

SpinButton

Forms.SpinButton.1

TabStrip

Forms.TabStrip.1

TextBox

Forms.TextBox.1

ToggleButton

Forms.ToggleButton.1

如下的代碼將在用戶窗體UserForm1中添加10個標簽控件和10個文本框控件:

Sub AddControlsDynamically() Dim oLB As Control Dim oTextBox As Control Dim oCombox As Control With UserForm1 For i = 1 To 10 '添加標簽控件 Set oLB = .Controls.Add("Forms.Label.1", "LB" & i, True) With oLB .Caption = "第" & i & "個標簽" .Left = 50 .Top = 30 + (i - 1) * 40 End With '添加文本框控件 Set oTextBox = .Controls.Add("Forms.TextBox.1", "Txt" & i, True) With oTextBox .Left = 50 + 100 .Top = 30 + (i - 1) * 40 .Width = 300 .Height = 30 End With Next i .Show End WithEnd Sub

如下圖所示,其中兩個命令按鈕是在設計狀態下添加的。

當控件是在vba代碼的運行階段動態添加的,如果要訪問控件的內容,需要用如下的加感歎號的引用形式:

userform1!thebox.text

比如要讀取上圖中的第一個文本框的內容,可以使用如下的代碼:

MsgBox UserForm1!Txt1.Text

其中Txt1爲動態添加文本框時指定的名稱。

0 阅读:6

職場菊菊子

簡介:感謝大家的關注