在Excel-VBA编程中,循环结构是非常重要的一个概念。通过循环结构,我们可以让计算机多次执行同样的代码,从而提高程序的效率和灵活性。在学习循环结构之前,我们需要了解几种常见的循环语句,如For循环、Do循环和While循环等。通过掌握这些循环语句的用法,我们可以更好地利用Excel-VBA的功能,实现更加复杂和高效的编程任务。
本帮助主题包括了有关在工作表或图表上使用 ActiveX 控件的特定信息。有关添加和处理控件的一般信息,请参阅“在文档中使用 ActiveX 控件”和“创建自定义对话框”。
在工作表上处理控件时,必须记住以下几点。
· 除 ActiveX 控件的标准属性之外,在 Microsoft Excel 中还可使用 ActiveX 控件的下列属性:BottomRightCell、LinkedCell、ListFillRange、Placement、PrintObject、TopLeftCell 和 ZOrder。
这些属性可用 ActiveX 控件的名称来返回或设置。下例滚动工作簿窗口,使 CommandButton1 位于窗口的左上角。
Set t = Sheet1.CommandButton1.TopLeftCell
With ActiveWindow
.ScrollRow = t.Row
.ScrollColumn = t.Column
End With
· 当 ActiveX 控件处于激活状态时,将禁用某些 Microsoft Excel Visual Basic 方法和属性。例如,当某一控件激活时,就不能使用 Sort 方法,故下述按钮单击事件处理过程中的代码将失败(因为用户单击按钮后,该按钮就处于激活状态)。
· Private Sub CommandButton1.Click
· Range("a1:a10").Sort Key1:=Range("a1")
End Sub
可通过先激活工作表上的其他元素的方法来绕过这种问题。例如,下列代码可对单元格区域排序:
Private Sub CommandButton1.Click
Range("a1").Activate
Range("a1:a10").Sort Key1:=Range("a1")
CommandButton1.Activate
· 当用户通过双击鼠标来编辑内嵌在其他应用程序的文档中的 Microsoft Excel 工作簿时,该工作簿上的控件将不会正常工作。如果用户是通过用右键单击工作簿,然后选中快捷菜单上的“打开”命令来编辑工作簿的话,工作簿上的控件就能正常工作了。
· 用 Microsoft Excel 5.0/95 工作簿文件格式保存 Microsoft Excel 工作簿时,将丢失 ActiveX 控件信息。
· 在工作表上 ActiveX 控件的事件处理过程中,Me 关键字所指向的是工作表,而非控件。
用 Visual Basic 添加控件
在 Microsoft Excel 中,用 OLEObjects 集合中的 OLEObject 对象代表 ActiveX 控件(所有的 OLEObject 对象也包含在 Shapes 集合中)。如果要用编程的方式向工作表添加 ActiveX 控件,可用 OLEObjects 集合的 Add 方法。下例向第一张工作表添加命令按钮。
Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
Left:=10, Top:=10, Height:=20, Width:=100
通过 Visual Basic 使用控件属性
绝大多数情况下,可在 Visual Basic 代码中用名称引用 ActiveX 控件。下例修改了控件“CommandButton1”的标题。
Sheet1.CommandButton1.Caption = "Run"
请注意,当在控件所在的工作表的类模块之外使用控件的名称时,必须用工作表的名称限定该控件的名称。
如果要修改在 Visual Basic 代码中所用的控件的名称,可先选定该控件,然后在“属性”窗口中设置控件的“(名称)”属性。
因为 ActiveX 控件也可用 OLEObjects 集合中的 OLEObject 对象代表,所以也可用该集合中的对象来设置控件的属性。下例设置了控件“CommandButton1”的左边位置。
Worksheets(1).OLEObjects("CommandButton1").Left = 10
那些不属于 OLEObject 对象的属性的控件属性,可通过由 Object 属性返回的实际控件对象来设置。下例设置了控件“CommandButton1”的标题。
Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "run me"
因为所有的 OLE 对象也是 Shapes 集合的成员,所以也可用该集合设置若干控件的属性。下例对齐第一张工作表上的所有控件的左边框。
For Each s In Worksheets(1).Shapes
If s.Type = msoOLEControlObject Then s.Left = 10
Next
使用 Shapes 和 OLEObjects 集合的控件名称
工作表上的 ActiveX 控件具有两个名称:其一是包含该控件的形状的名称,当查看工作表时,可在“Name”框中看到此名称;其二是控件的代码名称,在“属性”窗口的“(名称)”框右边的单元格中可看到此名称。第一次向工作表中添加控件时,形状名称和代码名称是相同的。但是,如果更改其中之一(形状名称或代码名称),另一个名称并不会自动随之更改。
对于控件的事件过程,其名称中所使用的是控件的代码名称。但是,当从工作表的 Shapes 或 OLEObjects 集合中返回控件时,必须使用形状名称(而不是代码名称),以便按名称引用控件。例如,假设向工作表中添加了一个复选框,其默认形状名称和默认代码名称都是“CheckBox1”。如果此后在“属性”窗口的“(名称)”旁键入了“chkFinished”,从而将控件的代码名称更改为“chkFinished”,则在事件过程名称中必须使用 chkFinished,而仍然应使用 CheckBox1 从 Shapes 或 OLEObject 集合中返回控件,如下例所示。
Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
版权所有Copyright©2021-2022安卓手游市场(www.hcyxsc.com)copyright
Excel-VBA入门知识(7):循环结构入门
在Excel-VBA编程中,循环结构是非常重要的一个概念。通过循环结构,我们可以让计算机多次执行同样的代码,从而提高程序的效率和灵活性。在学习循环结构之前,我们需要了解几种常见的循环语句,如For循环、Do循环和While循环等。通过掌握这些循环语句的用法,我们可以更好地利用Excel-VBA的功能,实现更加复杂和高效的编程任务。
20、在工作表上使用 ActiveX 控件本帮助主题包括了有关在工作表或图表上使用 ActiveX 控件的特定信息。有关添加和处理控件的一般信息,请参阅“在文档中使用 ActiveX 控件”和“创建自定义对话框”。
在工作表上处理控件时,必须记住以下几点。
· 除 ActiveX 控件的标准属性之外,在 Microsoft Excel 中还可使用 ActiveX 控件的下列属性:BottomRightCell、LinkedCell、ListFillRange、Placement、PrintObject、TopLeftCell 和 ZOrder。
这些属性可用 ActiveX 控件的名称来返回或设置。下例滚动工作簿窗口,使 CommandButton1 位于窗口的左上角。
Set t = Sheet1.CommandButton1.TopLeftCell
With ActiveWindow
.ScrollRow = t.Row
.ScrollColumn = t.Column
End With
· 当 ActiveX 控件处于激活状态时,将禁用某些 Microsoft Excel Visual Basic 方法和属性。例如,当某一控件激活时,就不能使用 Sort 方法,故下述按钮单击事件处理过程中的代码将失败(因为用户单击按钮后,该按钮就处于激活状态)。
· Private Sub CommandButton1.Click
· Range("a1:a10").Sort Key1:=Range("a1")
End Sub
可通过先激活工作表上的其他元素的方法来绕过这种问题。例如,下列代码可对单元格区域排序:
Private Sub CommandButton1.Click
Range("a1").Activate
Range("a1:a10").Sort Key1:=Range("a1")
CommandButton1.Activate
End Sub
· 当用户通过双击鼠标来编辑内嵌在其他应用程序的文档中的 Microsoft Excel 工作簿时,该工作簿上的控件将不会正常工作。如果用户是通过用右键单击工作簿,然后选中快捷菜单上的“打开”命令来编辑工作簿的话,工作簿上的控件就能正常工作了。
· 用 Microsoft Excel 5.0/95 工作簿文件格式保存 Microsoft Excel 工作簿时,将丢失 ActiveX 控件信息。
· 在工作表上 ActiveX 控件的事件处理过程中,Me 关键字所指向的是工作表,而非控件。
用 Visual Basic 添加控件
在 Microsoft Excel 中,用 OLEObjects 集合中的 OLEObject 对象代表 ActiveX 控件(所有的 OLEObject 对象也包含在 Shapes 集合中)。如果要用编程的方式向工作表添加 ActiveX 控件,可用 OLEObjects 集合的 Add 方法。下例向第一张工作表添加命令按钮。
Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
Left:=10, Top:=10, Height:=20, Width:=100
通过 Visual Basic 使用控件属性
绝大多数情况下,可在 Visual Basic 代码中用名称引用 ActiveX 控件。下例修改了控件“CommandButton1”的标题。
Sheet1.CommandButton1.Caption = "Run"
请注意,当在控件所在的工作表的类模块之外使用控件的名称时,必须用工作表的名称限定该控件的名称。
如果要修改在 Visual Basic 代码中所用的控件的名称,可先选定该控件,然后在“属性”窗口中设置控件的“(名称)”属性。
因为 ActiveX 控件也可用 OLEObjects 集合中的 OLEObject 对象代表,所以也可用该集合中的对象来设置控件的属性。下例设置了控件“CommandButton1”的左边位置。
Worksheets(1).OLEObjects("CommandButton1").Left = 10
那些不属于 OLEObject 对象的属性的控件属性,可通过由 Object 属性返回的实际控件对象来设置。下例设置了控件“CommandButton1”的标题。
Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "run me"
因为所有的 OLE 对象也是 Shapes 集合的成员,所以也可用该集合设置若干控件的属性。下例对齐第一张工作表上的所有控件的左边框。
For Each s In Worksheets(1).Shapes
If s.Type = msoOLEControlObject Then s.Left = 10
Next
使用 Shapes 和 OLEObjects 集合的控件名称
工作表上的 ActiveX 控件具有两个名称:其一是包含该控件的形状的名称,当查看工作表时,可在“Name”框中看到此名称;其二是控件的代码名称,在“属性”窗口的“(名称)”框右边的单元格中可看到此名称。第一次向工作表中添加控件时,形状名称和代码名称是相同的。但是,如果更改其中之一(形状名称或代码名称),另一个名称并不会自动随之更改。
对于控件的事件过程,其名称中所使用的是控件的代码名称。但是,当从工作表的 Shapes 或 OLEObjects 集合中返回控件时,必须使用形状名称(而不是代码名称),以便按名称引用控件。例如,假设向工作表中添加了一个复选框,其默认形状名称和默认代码名称都是“CheckBox1”。如果此后在“属性”窗口的“(名称)”旁键入了“chkFinished”,从而将控件的代码名称更改为“chkFinished”,则在事件过程名称中必须使用 chkFinished,而仍然应使用 CheckBox1 从 Shapes 或 OLEObject 集合中返回控件,如下例所示。
Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub