是否可以在VBA中检查对象是否支持某种方法而没有错误处理程序?
我发现有很多重复的问题,例如JavaScript和Symphony2,但还没有在VBA中。
我想对.sendkeys "{ENTER}"
类项使用ie.document
命令,并学习如何检查对象是否支持方法,从长远来看,我可以编写更干净的代码。
示例代码:
Set elements(17) = ie.document.getElementsByClassName("ng-binding ng-scope")
for each item in elements(17)
item.sendkeys "{ENTER}"
next item
答案 0 :(得分:5)
如果没有查看您正在使用的API的文档,则不能。
至少不是迟到的代码。根据定义,后期绑定代码在运行时被解析,这意味着您没有编译时验证成员是否可以在该对象的接口上使用 - 这就是此代码编译的原因:
Option Explicit
Public Sub Test(ByVal o As Object)
Debug.Print o.FooBarBazz
End Sub
或者这个更现实的一个:
Debug.Print ThisWorkbook.Worksheets("Test").Naame 'Worksheets.Item returns an Object
在运行时之前知道是否支持成员的唯一方法是使用早期绑定调用:
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Test")
Debug.Print ws.Naame ' typo won't compile!
当然 简单,因为即使是早期绑定的接口也可以有一个COM标志,说它们是“可扩展的”。 Excel.Application
就是这样一个界面:
Debug.Print Excel.Application.FooBarBazz ' compiles!
但我正在漂流。
你说“没有错误处理”......这算不算了?
On Error Resume Next
item.sendkeys "{ENTER}"
'If Err.Number = 438 Then Debug.Print "Not supported!"
On Error GoTo 0