Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 我想知道Sheet1和设置工作表之间的区别_Excel_Vba - Fatal编程技术网

Excel 我想知道Sheet1和设置工作表之间的区别

Excel 我想知道Sheet1和设置工作表之间的区别,excel,vba,Excel,Vba,我在模块1中有一段脚本,用于检查是否单击了选项按钮 选项按钮放在Sheet1中,名为“Info”,所以我认为下面的脚本可以工作 Sub checkClicked() dim Page as worksheet set Page as worksheets(“Info”) Debug.print Page.optClicked End sub 但当我这样做时,它会说找不到方法或数据成员。如果我把它换成新的,它才会起作用 … Debug.print Sheet1.opt

我在模块1中有一段脚本,用于检查是否单击了选项按钮

选项按钮放在Sheet1中,名为“Info”,所以我认为下面的脚本可以工作

Sub checkClicked()
    dim Page as worksheet
    set Page as worksheets(“Info”)
    Debug.print Page.optClicked 
End sub
但当我这样做时,它会说找不到方法或数据成员。如果我把它换成新的,它才会起作用

… 
Debug.print Sheet1.optClicked
…

有人能告诉我为什么会发生这种情况吗?

工作表中的参数是您感兴趣的工作表的名称,即“Sheet1”。

工作表中的参数是您感兴趣的工作表的名称,即“Sheet1”

另外,您的调试打印代码看起来很奇怪,请使用debug.print(“bla”)。。 你有激活的选项吗

另外,您的调试打印代码看起来很奇怪,请使用debug.print(“bla”)。。
您是否激活了Option explicit?

尝试
设置页面=工作表(“信息”)
并且不要使用这些卷曲的
引号-以防万一(对于Excel公式,这很重要)。

尝试
设置页面=工作表(“信息”)
并且不要使用这些卷曲的
引号-以防万一(对于Excel公式来说,这很重要)。

将Sheet1视为“工作表”的“子类”-在向工作表添加控件时,您正在添加新成员。通用工作表对象没有表示选项按钮的成员,而Sheet1有

Sub Test()

    Dim sht As Worksheet
    Dim sht1 As Sheet1

    Set sht = ThisWorkbook.Sheets("Sheet1")
    Set sht1 = Sheet1

    Debug.Print sht.optClicked  'error
    Debug.Print sht1.optClicked 'OK

End Sub
将Sheet1视为“工作表”的“子类”-在向工作表添加控件时,您正在添加新成员。通用工作表对象没有表示选项按钮的成员,而Sheet1有

Sub Test()

    Dim sht As Worksheet
    Dim sht1 As Sheet1

    Set sht = ThisWorkbook.Sheets("Sheet1")
    Set sht1 = Sheet1

    Debug.Print sht.optClicked  'error
    Debug.Print sht1.optClicked 'OK

End Sub

其他方法:工作表上的ActiveX控件可以从两个集合中访问:形状OLEObjects。您可以使用OLEObjects集合访问复选框

Sub checkClicked()
    Dim Page As Worksheet
    Set Page = Worksheets("Info")

    ' 1/ ActiveX check box in Shapes collection
    Dim myShape As Shape
    Set myShape = Page.Shapes("optClicked")
    ' --------------------------------------

    ' 2/ ActiveX check box in OLEObjects collection
    Dim myOLEObject As OLEObject
    Set myOLEObject = Page.OLEObjects("optClicked")

    ' Use Object property to get access to your check box
    Dim myCheckBox As Variant
    Set myCheckBox = myOLEObject.Object

    If (TypeOf myCheckBox Is MSForms.CheckBox) Then
      Debug.Print myCheckBox.value
    End If
End Sub

其他方法:工作表上的ActiveX控件可以从两个集合中访问:形状OLEObjects。您可以使用OLEObjects集合访问复选框

Sub checkClicked()
    Dim Page As Worksheet
    Set Page = Worksheets("Info")

    ' 1/ ActiveX check box in Shapes collection
    Dim myShape As Shape
    Set myShape = Page.Shapes("optClicked")
    ' --------------------------------------

    ' 2/ ActiveX check box in OLEObjects collection
    Dim myOLEObject As OLEObject
    Set myOLEObject = Page.OLEObjects("optClicked")

    ' Use Object property to get access to your check box
    Dim myCheckBox As Variant
    Set myCheckBox = myOLEObject.Object

    If (TypeOf myCheckBox Is MSForms.CheckBox) Then
      Debug.Print myCheckBox.value
    End If
End Sub

谢谢Peter,我尝试过将页面设置为工作表(“信息”),而不是将页面设置为工作表(“信息”),但它仍然没有optClicked数据成员谢谢Peter,我尝试过将页面设置为工作表(“信息”),而不是将页面设置为工作表(“信息”),但它仍然没有optClicked数据成员谢谢Christian,但你的方式对我仍然不起作用。我可以使用debug.print(“bla”)…以及debug.print“bla”进行调试。嗯,我没有打开显式选项。你收到什么样的错误消息?信息写得正确吗?如果没有,请简单地尝试:Set Page=ActiveWorkbook.Worksheets(1)这会将页面设置为第1页。optklicked是什么类型的数据?在任何情况下,使用option explicit,如果您不这样做,会出现各种小错误(搜索stackoverflow以获取解释)谢谢Christian,但您的方式对我仍然不起作用。我可以使用debug.print(“bla”)…以及debug.print“bla”进行调试.humm我没有打开option explicit。您收到了什么类型的错误消息?信息是否正确写入?如果没有,请简单尝试:Set Page=ActiveWorkbook。将页面设置为第一页的工作表(1)。optklicked是什么类型的数据?在任何情况下,使用option explicit,如果不正确,会出现各种小错误(搜索stackoverflow以获取解释)嗨,Jeffrey,我将其设置为…set Page=Worksheets(“Sheet1”)…甚至set Page=activeworkbook.Worksheets(“Sheet1”),但它仍然不认识到,嗨,Jeffrey,我将其设置为…set Page=Worksheets(“Sheet1”)…甚至set Page=activeworkbook.Worksheets(“Sheet1”)但它仍然没有意识到这一点,