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