从另一个工作表

时间:2015-11-21 11:55:31

标签: excel excel-vba vba

我在工作表上有一个ActiveX CheckBox控件" A"另一个在工作表" B"。当我在" A"检查CheckBox时,我希望我的宏在" B"检查CheckBox。

到目前为止我尝试过:

ThisSheets("B").Shapes("CheckBox1").ControlFormat.Value = xlOn

And thisThisWorkbook.Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value = 1

这两个代码都给我一个错误,说明该对象不接受此属性或方法。

因此无法从其他工作表中检查CheckBox吗?

3 个答案:

答案 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