我有一本包含多个工作表的工作簿。我有一个菜单页面(工作表),其中包含多个用户选择(输入新订单、更新订单等)。每个选项旁边都有一个复选框,根据选中的复选框,单元格F4:F21
改变自0
to 1
并且,细胞B1
更改我想要去的工作表的名称。我的主菜单工作表中有以下 VBA,但是当我单击复选框时,没有任何反应。有什么想法吗?
CODE
Private Sub Worksheet_Activate()
ClearMenuForm
End Sub
Private Sub Worksheet_Change (ByVal Target As Range)
Dim sh As String
If Not Intersect(Target, Range("F4:F21")) Is Nothing Then
sh = Cells(1, "B").Value
Sheets(sh).Select
End If
End Sub
单击复选框不会激活该事件Worksheet_Change
(see this http://msdn.microsoft.com/en-us/library/office/ff839775.aspx)。这就是为什么什么也没有发生。
尝试更改其中一个单元格以查看效果。
我认为您想要做的是将操作分配给您的复选框。您可以通过两种方式执行此操作:
-
右键单击该复选框,然后分配宏...
您必须创建关联的宏,其中可能包含您已编写的部分代码,和/或对您拥有的子程序的调用。您可以带上 VBE (Alt+F11),在您的 VBA 项目中插入一个模块,然后编写您的Sub
, e.g.,
Sub CheckBox1_Click()
MsgBox "Checkbox 1a has changed"
End Sub
-
通过 VBA(例如,this https://stackoverflow.com/questions/1007164/detecting-changes-to-checkboxes-via-vba)。使用下面的示例代码,您将执行InitCBs
,这将关联CheckBox1Change
与复选框(它实际上为图中的两个复选框分配操作;复选框 2 的操作是CheckBox2Change
)。您还可以设置InitCBs
打开文件时执行。
Sub CheckBox1Change()
MsgBox "Checkbox 1b has changed"
End Sub
Sub InitCBs()
Dim cb As CheckBox
For Each cb In ActiveSheet.CheckBoxes
With cb
Dim action As String
'action = "CheckboxChange"
action = Replace(cb.Name, " ", "") & "Change"
.OnAction = action
End With
Next cb
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)