Excel VBA,错误438“对象不支持WorksheetFunction上的此属性或方法

时间:2019-05-23 16:38:06

标签: excel vba worksheet-function

所以我在使用地址功能的AT_cellnum行上的标题中出现错误。


Sub AllTransURL()

Dim AT_rownum As Integer, pathrange As Range, AT_cellnum As String, sheetname As String

sheetname = "All Transmissions"
Set pathrange = ThisWorkbook.Worksheets("All Transmissions").Range("H1:H53")

AT_rownum = Application.WorksheetFunction.Match("infra/remwip/Public/0_00_Rapports", pathrange, 0)

AT_cellnum = Application.WorksheetFunction.Address(AT_rownum, 1, 1, 1, sheetname)

End Sub

谢谢

1 个答案:

答案 0 :(得分:1)

在对象模型中不需要Address函数,因此它不在WorksheetFunction接口上。

经验法则,如果您要进行早期绑定的成员调用,而您要调用的成员没有出现在自动完成名称列表中,则它不是您正在使用的对象的成员;如果代码仍然可以编译,则很有可能在运行时抛出错误438。

不需要Address函数,因为使用对象模型时,您有一个Range对象,而Range具有一个Address属性可用:WorksheetFunction完全是多余的。

您知道范围是来自哪个工作表(sheetname);您知道想要的行(AT_rownum),也知道想要的列(1)-因此:

Dim AT_range As Range
Set AT_range = ThisWorkbook.Worksheets(sheetName).Cells(AT_rownum, 1)

AT_cellnum = AT_range.Address

但是正如Scott所暗示的那样,在VBA中很少需要单元格的地址:如果您有Range对象,则可能已经拥有了所需的一切。