Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA,错误438“;对象没有';不支持工作表函数上的此属性或方法_Excel_Vba_Worksheet Function - Fatal编程技术网

Excel VBA,错误438“;对象没有';不支持工作表函数上的此属性或方法

Excel VBA,错误438“;对象没有';不支持工作表函数上的此属性或方法,excel,vba,worksheet-function,Excel,Vba,Worksheet Function,所以我在AT_cellnum行的标题中得到了一个错误,在那里我使用了address函数 感谢您在对象模型中不需要地址函数,因此它不在工作表函数界面上 根据经验,如果您正在进行早期绑定成员调用,而您要调用的成员没有出现在自动完成名称列表中,则它不是您正在处理的对象的成员;如果代码仍然可以编译,则很有可能在运行时抛出错误438 不需要地址函数,因为当您使用对象模型时,您有一个范围对象,范围有一个现成的地址属性:一个工作表函数,因为它是完全冗余的 您知道范围在哪个工作表中(sheetname);您

所以我在AT_cellnum行的标题中得到了一个错误,在那里我使用了address函数




感谢您

在对象模型中不需要
地址
函数,因此它不在
工作表函数
界面上

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


不需要
地址
函数,因为当您使用对象模型时,您有一个
范围
对象,
范围
有一个现成的
地址
属性:一个
工作表函数
,因为它是完全冗余的

您知道范围在哪个工作表中(
sheetname
);您知道您想要哪一行(
AT_rownum
),并且您知道您想要哪一列(
1
)-因此:


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

at_cellnum=Worksheets(sheetname).Range(“a”&at_rownum).address(1,1,xlA1,1)
您不能在VBA中将该函数用作工作表函数,因此会出现错误。如果您尝试键入它,它将不会像其他函数那样显示。编辑:我知道@ScottCraner已经给了你答案。顺便说一句,如果您找不到匹配项,此代码将给您一个错误;)但最终我的猜测是,您希望返回A列中找到匹配项的值。跳过地址,只需执行
AT_cellval=Worksheets(sheetname).Range(“A”&AT_rownum).value
谢谢Scott,您的第一个答案正好是您想要的。因为我不想要那个单元格的值,而是想要附加到它的超链接。谢谢
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
Dim AT_range As Range
Set AT_range = ThisWorkbook.Worksheets(sheetName).Cells(AT_rownum, 1)

AT_cellnum = AT_range.Address