use*_*510 5 excel vba combobox onchange
我是 VBA 新手,希望在组合框(用户窗体内)中的选择发生更改时触发一个简单的更改事件。
我尝试了这两种Private Sub myCombo_AfterUpdate()方法,Private Sub myCombo_Change()但在这两种情况下,当我在组合框中选择不同的值时,都不会发生任何情况。
这是组合框的错误方法吗?
我的子程序如下启动,因为我想将下拉列表中当前选定的项目与表中的值进行比较:
Private Sub myCombo_AfterUpdate()
If Me.myCombo.Value = Worksheets(8).Range("A4") Then
'do stuff
End Sub
Run Code Online (Sandbox Code Playgroud)
非常感谢蒂姆对此提供的任何帮助。
默认情况下,创建新工作表时,命名方式如下所示:Sheet1、Sheet2、Sheet3等。它们按创建顺序编号。
“函数”Worksheets(1)可Worksheets(2)用于按索引获取工作表。该索引可以是工作表名称的任一数字:
使用 Worksheets (index),其中 index 是工作表索引号或名称,返回单个 Worksheet 对象。
它基本上意味着返回工作簿的Worksheets(i)当前第 - 个工作表(如果是整数)。ii
问题是工作表编号(例如 和 中的“1” Sheet1)Worksheets(1)不一定相同。如果一张一张地创建工作表且顺序不变,则默认情况下它们是相同的。但是,数字不匹配的情况可能有多种。
因此,强烈建议按名称而不是按编号获取工作表,即:
Worksheets("Sheet1")
Run Code Online (Sandbox Code Playgroud)
并不是
Worksheets(1)
Run Code Online (Sandbox Code Playgroud)
此外,仍然可以选择将工作表引用为对象 ( Sheet1)。
Sheet1并被Sheet2创建。Button在 上添加一个对象Sheet1。Sheet2向左移动使其成为最左侧的页面(如屏幕截图所示)。Button向对象添加宏Sheet1,并向宏添加断点。另外,使用Add Watch...命令将变量添加到调试部分
Worksheets(1).CodeNameWorksheets(2).CodeNameButton对象并转到 VB 代码窗口,Watches您将在该窗口中看到Worksheets(1).CodeName = "Sheet2"(最左边的表)Worksheets(2).CodeName = "Sheet1"(第二张)