1 如何取得表單控件的名字?
1.1 問題的由來
- 表單控件和 表單的 activeX控件,以及窗體控件不同
- 表單控件不能直接編寫其相關代碼,也看不到其屬性欄
- 但是可以直接綁定一個sub
- 但是問題來了:如何知道表單控件的名字,方便在VBA裏設置其屬性呢?
1.2 所有的表單控件都屬於shapes,下面還有子類 scrollbars ,buttons 等對象集合
- worksheet 下屬
- shapes 下屬
- buttons, scrollbars
- "Button 2" 或 "Scroll Bar 1"
1.3 取得表單控件的名字的方法1
- visible 是個通用屬性
- 所有的表單控件都可以設置visible
Sub test111()
Worksheets("sheet3").ScrollBars("Scroll Bar 1").Visible = True
Sheet4.Buttons("Button 2").Visible = True
End Sub
Sub test111()
Worksheets("sheet3").ScrollBars("Scroll Bar 1").Visible = False
Sheet4.Buttons("Button 2").Visible = True
End Sub
1.4 取得表單裏所有控件的名稱
- 可以用遍歷的方式
- 所有控件公共的屬性,shape.name
Sub test112()
Dim s1 As Shape
For Each s1 In Worksheets("sheet3").Shapes
Debug.Print s1.Name
Next
End Sub
2 表單控件的命名格式
2.1 表單控件的命名格式,中間有空格---Activex和窗體控件沒有
- 系統自動命名
- 無法修改
- 命名中間有空格
- scrollbar 命名爲 Scroll Bar 1 等,而ActiveX控件或窗體控件命名爲:ScrollBar1
- commadbutton 命名爲 button 1 等
2.2 一般情況下,一定要首字母大寫。。。即使用在文本內 "Scroll Bar 1"
- 規範寫法,都要寫成 Scroll Bar 1 這種
2.2.1 在查 表單控件名的時候,隨便大小寫都可以識別
Sub test111()
Worksheets("sheet3").ScrollBars("scroll Bar 1").Visible = False
Sheet4.Buttons("button 2").Visible = True
End Sub
2.2.2 如果在其他情況,比如下面的例子,只能嚴格用 "Scroll Bar 1"
- 這個例子裏,如果寫成 "scroll bar 1",都會找不到shape!!
Sub test_scrollbar1()
Debug.Print "開始運行"
Dim s1 As Shape
For Each s1 In Worksheets("sheet3").Shapes
If s1.Name = "Scroll Bar 1" Then
Debug.Print "找到了"
s1.Select
Selection.Value = 0
For i = 1 To 1000
Selection.Value = i
Worksheets("sheet3").Cells(6, 6) = i
Next
Else
Debug.Print "沒找到"
End If
Next
Debug.Print "運行結束"
End Sub