如何使用VBA在Excel中查找和选择复选框

如何使用VBA在Excel中查找和选择复选框,excel,vba,Excel,Vba,我有一本工作簿,里面有许多工作表和数百个复选框、开关等 在我继承的代码中的某个地方 “FlashCopy_chkbox.Enabled=False” 不起作用。我需要找到该复选框/切换在同一文件的早期版本中的位置 简单地说,如何使用vba选择引用的内容并将其置于屏幕中心?您不能直接从工作表模块外部调用工作表上的控件。FlashCopy\u chkbox是否在脚本中的某个地方声明设置FlashCopy\u chkbox=工作表(“Sheet1”)。FlashCopy\u chkbox 无论如何,这

我有一本工作簿,里面有许多工作表和数百个复选框、开关等

在我继承的代码中的某个地方

“FlashCopy_chkbox.Enabled=False”

不起作用。我需要找到该复选框/切换在同一文件的早期版本中的位置


简单地说,如何使用vba选择引用的内容并将其置于屏幕中心?

您不能直接从工作表模块外部调用工作表上的控件。
FlashCopy\u chkbox
是否在脚本中的某个地方声明<代码>设置FlashCopy\u chkbox=工作表(“Sheet1”)。FlashCopy\u chkbox

无论如何,这会找到它

Sub LookForFlash()
    Dim ws As Worksheet
    Dim ck As OLEObject

    For Each ws In ThisWorkbook.Worksheets
        On Error Resume Next
        Set ck = ws.OLEObjects("FlashCopy_chkbox")
        If Err = 0 Then
            MsgBox ws.Name
        End If
        On Error GoTo 0
    Next ws
End Sub

我知道你正在寻找一个内置的方法,但在未来请张贴一些代码。堆栈溢出用于帮助改进现有代码。

您不能直接从工作表模块外部调用工作表上的控件。
FlashCopy\u chkbox
是否在脚本中的某个地方声明<代码>设置FlashCopy\u chkbox=工作表(“Sheet1”)。FlashCopy\u chkbox

无论如何,这会找到它

Sub LookForFlash()
    Dim ws As Worksheet
    Dim ck As OLEObject

    For Each ws In ThisWorkbook.Worksheets
        On Error Resume Next
        Set ck = ws.OLEObjects("FlashCopy_chkbox")
        If Err = 0 Then
            MsgBox ws.Name
        End If
        On Error GoTo 0
    Next ws
End Sub

我知道你正在寻找一个内置的方法,但在未来请张贴一些代码。堆栈溢出用于帮助改进现有代码。

以下代码将在VBE的
立即
窗口中列出工作簿中所有工作表上的所有ActiveX控件。此外,代码将列出所有表单控件
选项按钮
复选框
,以及所有表单上的
按钮

Option Explicit

Public Sub FindThemAll()

Dim ws As Worksheet
Dim obj As OLEObject
Dim opt As OptionButton
Dim chk As CheckBox
Dim cmd As Button

For Each ws In ThisWorkbook.Worksheets
    'Handling all ActiveX controls
    For Each obj In ws.OLEObjects
        Debug.Print "---------------------------------------------"
        Debug.Print "ActiveX component on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & obj.TopLeftCell.Address
        Debug.Print "Name of the component: " & obj.Name
        Debug.Print "Object type: " & TypeName(obj.Object)
    Next obj
    'Handling Form Controls
    For Each opt In ws.OptionButtons
        Debug.Print "---------------------------------------------"
        Debug.Print "Form control on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & opt.TopLeftCell.Address
        Debug.Print "Name of the component: " & opt.Name
        Debug.Print "Object type: OptionButton"
    Next opt
    For Each chk In ws.CheckBoxes
        Debug.Print "---------------------------------------------"
        Debug.Print "Form control on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & chk.TopLeftCell.Address
        Debug.Print "Name of the component: " & chk.Name
        Debug.Print "Object type: CheckBox"
    Next chk
    For Each cmd In ws.Buttons
        Debug.Print "---------------------------------------------"
        Debug.Print "Form control on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & cmd.TopLeftCell.Address
        Debug.Print "Name of the component: " & cmd.Name
        Debug.Print "Object type: Button"
    Next cmd
Next ws

End Sub

如果您有任何问题,请告诉我。

以下代码将在VBE的
立即
窗口中列出工作簿中所有工作表上的所有ActiveX控件。此外,代码将列出所有表单控件
选项按钮
复选框
,以及所有表单上的
按钮

Option Explicit

Public Sub FindThemAll()

Dim ws As Worksheet
Dim obj As OLEObject
Dim opt As OptionButton
Dim chk As CheckBox
Dim cmd As Button

For Each ws In ThisWorkbook.Worksheets
    'Handling all ActiveX controls
    For Each obj In ws.OLEObjects
        Debug.Print "---------------------------------------------"
        Debug.Print "ActiveX component on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & obj.TopLeftCell.Address
        Debug.Print "Name of the component: " & obj.Name
        Debug.Print "Object type: " & TypeName(obj.Object)
    Next obj
    'Handling Form Controls
    For Each opt In ws.OptionButtons
        Debug.Print "---------------------------------------------"
        Debug.Print "Form control on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & opt.TopLeftCell.Address
        Debug.Print "Name of the component: " & opt.Name
        Debug.Print "Object type: OptionButton"
    Next opt
    For Each chk In ws.CheckBoxes
        Debug.Print "---------------------------------------------"
        Debug.Print "Form control on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & chk.TopLeftCell.Address
        Debug.Print "Name of the component: " & chk.Name
        Debug.Print "Object type: CheckBox"
    Next chk
    For Each cmd In ws.Buttons
        Debug.Print "---------------------------------------------"
        Debug.Print "Form control on sheet: " & ws.Name
        Debug.Print "Location on sheet: " & cmd.TopLeftCell.Address
        Debug.Print "Name of the component: " & cmd.Name
        Debug.Print "Object type: Button"
    Next cmd
Next ws

End Sub

如果您有任何问题,请告诉我。

循环检查每张工作表中的所有对象,并测试类型
复选框
,然后测试名称(或仅测试名称)。找到所需内容后,将其激活。在每个工作表中的所有对象中循环并测试类型
复选框
,然后测试名称(或仅测试名称)。一旦你找到你需要的,激活它。谢谢-。TopLeftCell。地址就是我要找的!谢谢-.TopLeftCell.Address就是我要找的!谢谢,这帮助我找到了工作表,然后将.TopLeftCell.Address定位到了准确的位置。太棒了!很高兴能够帮助您。谢谢,这帮助我找到了工作表,然后将.TopLeftCell.Address移到了确切的位置。太棒了!很高兴能帮助你。