Excel VBA, ошибка 438 "объект не поддерживает это свойство или метод в WorksheetFunction - PullRequest
1 голос
/ 23 мая 2019

Итак, я получаю сообщение об ошибке в заголовке строки 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 Ответ

1 голос
/ 23 мая 2019

Нет необходимости в функции Address в объектной модели, следовательно, она не в интерфейсе WorksheetFunction.

Эмпирическое правило, если вы делаете ранний вызов члена иэлемент, которого вы хотите вызвать, не отображается в списке имен автозаполнения, он не является членом объекта, с которым вы работаете;если код все равно компилируется, есть большая вероятность, что он выдаст ошибку 438 во время выполнения.

Нет необходимости в функции Address, потому что при работе с объектной моделью у вас есть Range object, и 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

Но, как намекал Скотт, адрес ячейки редко бывает чем-то, что вы нужно в VBA: если у вас есть Range объект, скорее всего, у вас уже есть все, что вам нужно.

...