gpt4 book ai didi

excel - VBA在设置之前检查对象是否存在

转载 作者:行者123 更新时间:2023-12-04 19:58:56 25 4
gpt4 key购买 nike

在使用 set 之前检查对象是否存在的最佳方法是什么?

我有很多工作簿,它们包含复选框和选项按钮。
我有一个数组,其中包含不同工作簿可能具有的复选框和选项按钮的所有可能名称的列表

为了让我的问题更清楚,让我们假设我有

sArray(i) = "CheckBox15"

当我做
Set s = .OLEObjects(sArray(i))
给我一个 错误 1004 当事件工作表中没有名为“CheckBox15”的复选框时。

我在下面的代码中想要的是添加一行告诉:

如果当前工作表(ws)上存在“CheckBox15”,则设置....是否有任何命令可以检查对象是否存在?
'ws is the worksheet
Dim s As OLEObject
Dim i As Long

with ws
For i = 0 To UBound(sArray)
Set s = .OLEObjects(sArray(i))
If s.Object.Value = True Then
GetOptionCheck = GetOptionCheck & s.Object.Caption
End If
Next i
end with

最佳答案

您可以构建自定义 bool 函数以进行快速检查:

Public Function objectExists(ByRef ws As Worksheet, ByVal someName As String) As Boolean

On Error GoTo objectExists_Error

Dim someOle As OLEObject
Set someOle = ws.OLEObjects(someName)
objectExists = True

On Error GoTo 0
Exit Function

objectExists_Error:
objectExists = False

End Function

像这样称呼它:
Sub TestMe()

Dim s As OLEObject
Dim i As Long
Dim ws As Worksheet: Set ws = Worksheets(1)
Dim someArray As Variant
someArray = Array("CheckBox1", "CheckBox2", "CheckBox3", "CheckBox4")

With ws
For i = LBound(someArray) To UBound(someArray)
If objectExists(ws, someArray(i)) Then
Set s = .OLEObjects(someArray(i))
Debug.Print s.object.Caption
End If
Next i
End With

End Sub

关于excel - VBA在设置之前检查对象是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54946219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com