Excel VBA在设置前检查对象是否存在
在对对象使用set之前,检查对象是否存在的最佳方法是什么 我有很多工作簿,它们包含复选框和选项按钮。 我有一个数组,其中包含不同工作簿可能具有的复选框和选项按钮的所有可能名称的列表 为了澄清我的问题,让我们假设我有Excel VBA在设置前检查对象是否存在,excel,vba,Excel,Vba,在对对象使用set之前,检查对象是否存在的最佳方法是什么 我有很多工作簿,它们包含复选框和选项按钮。 我有一个数组,其中包含不同工作簿可能具有的复选框和选项按钮的所有可能名称的列表 为了澄清我的问题,让我们假设我有 sArray(i) = "CheckBox15" 当我这样做的时候 Set s=.OLEObjects(sArray(i)) 当活动工作表中没有名为“CheckBox15”的复选框时,正在给我一个错误1004 我想在下面的代码中添加一行,告诉您: 如果当前工作表(ws)上存在“Ch
sArray(i) = "CheckBox15"
当我这样做的时候
Set s=.OLEObjects(sArray(i))
当活动工作表中没有名为“CheckBox15”的复选框时,正在给我一个错误1004
我想在下面的代码中添加一行,告诉您:
如果当前工作表(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
您可以构建自定义布尔函数以进行快速检查:
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
谢谢,你的解决方案很好,我会选择是作为选定的解决方案