我回答this的問題,顯然對OP的滿意度,但仍然覺得他們的問題令人費解。他們的問題涉及一個表達式,其中一個工作簿對象與一個字符串連接,觸發Run-time Error '438': Object doesn't support this property or method
。您可以通過簡單地輸入爲什麼這不是一個類型不匹配?
?"Hello, " & ThisWorkbook
在即時窗口中重現此類錯誤。
我的問題是 - 爲什麼這會增加那錯誤,而不是錯誤13 - 類型不匹配?合理的猜測是VBA試圖爲工作簿對象查找默認屬性,並且默認屬性不存在。但是,如果是這樣,我期望它是微軟的Visual Basic 6.0錯誤代碼列表中的以下錯誤:Automation object doesn't have a default value (Error 443)
。
它主要是學術上的興趣,但如果將沒有默認屬性的對象連接到字符串的結果始終爲錯誤438,並且這是觸發錯誤438的唯一方式,而不是在連接字符串時可能發生另一個錯誤同一個對象,然後將下面的代碼可能是有用的:
Function HasDefault(O As Variant) As Boolean
Dim i As Long
If Not IsObject(O) Then Exit Function
On Error Resume Next
i = Len("Hello, " & O)
If Err.Number = 438 Then
HasDefault = False
Else
HasDefault = True
End If
End Function
我已經在各種不同的物體進行了測試,對於那些我已經測試了它返回false什麼時候_Default
不在對象瀏覽器中查看時顯示爲該對象的(隱藏)成員。儘管如此,我並不完全相信這個功能,我仍然對這裏發生的事情感到困惑。
你給自己的答案對我來說似乎很完美。 :) –