我在工作表上有一个ActiveX CheckBox控件" A"另一个在工作表" B"。当我在" A"检查CheckBox时,我希望我的宏在" B"检查CheckBox。
到目前为止我尝试过:
This:Sheets("B").Shapes("CheckBox1").ControlFormat.Value = xlOn
And this:ThisWorkbook.Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value = 1
这两个代码都给我一个错误,说明该对象不接受此属性或方法。
因此无法从其他工作表中检查CheckBox吗?
答案 0 :(得分:4)
我发现使用With ... End With statement引用工作表很有用,因为它允许多个操作。
With Worksheets("B")
' for Form Control Checkbox
.Shapes("Check Box 2").ControlFormat.Value = xlOn
' for ActiveX Control Checkbox
.Shapes("CheckBox1").OLEFormat.Object.Object.Value = xlOn
End With
前缀句点(又名.
或句号)适用于父工作表。
答案 1 :(得分:1)
表单1中的Checkbox1更改表2中的checkbox1
Private Sub CheckBox1_Click()
If Me.CheckBox1 = True Then
Sheets("Sheet2").CheckBox1.Value = True
Else
Sheets("Sheet2").CheckBox1.Value = False
End If
End Sub
答案 2 :(得分:0)
对我来说,分别将数字1和0替换为 布尔"真"和"错误"不工作。有人说ActivexControl 有"错误"等于-4146,FormControl有" False"等于0.这也不起作用。下面的剪辑正在运行。
Dim i as Integer
For i = 1 to 502
If Sheets("Sheet1").Shapes("Alpha-" & i).ControlFormat.Value = 1 Then '<-- FormControl
Sheets("Sheet2").Shapes("beta" & i).OLEFormat.Object.Object.Value = 1 '<--ActivexControl
Else
Sheets("Sheet2").Shapes("beta" & i).OLEFormat.Object.Object.Value = 0 '<--ActivexControl
End If
next i