如何在 Excel 中使用鼠标选择某个区域内的所有 ActiveX 对象?

如何在 Excel 中使用鼠标选择某个区域内的所有 ActiveX 对象?

因为这个问题由于 ActiveX 对象的大小发生变化,我无法在 Excel 工作表中对 ActiveX 对象进行分组。对它们进行分组会导致我的解决方案不工作,这很烦人。

但是,我经常希望能够使用鼠标选择一个区域,然后选择该区域内的所有 ActiveX 对象。这对于轻松选择对象并对其进行初始分组也很有用。

基本上:

  • 使用鼠标选择区域
  • 自动选择区域内的所有 ActiveX 组件

如果需要的话,我可以使用 VBA 解决方案。

我怎样才能做到这一点?

答案1

考虑:

Sub ShapePicker()
    Dim sh As Shape, st As Variant, Llist As String
    Dim ty As String
    Dim nm As String
    Dim r As Range

    Dim ary As Variant

    For Each sh In ActiveSheet.Shapes
        ty = sh.Type
        nm = sh.name
        Set r = sh.TopLeftCell
        If ty = msoOLEControlObject Then
            If Not Intersect(r, Selection) Is Nothing Then
                If Llist = "" Then
                    Llist = nm
                Else
                    Llist = Llist & "," & nm
                End If
            End If
        End If
    Next sh
    ary = Split(Llist, ",")
    ActiveSheet.Shapes.Range((ary)).Select
End Sub

相关内容