Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
адрес полученный методом .address из VBA не воспринимается как ссылка в формулах EXCEL
 
Добрый день. Подскажите пожалуйста, почему адрес ячейки найденный через функцию VBA методом .Address нельзя применить в качестве аргумента "ссылка" в функциях Excel&
пример :
функция возвращает адрес ячейки диапазона, соответствующего значению
Цитата
Function getAddress(sv As Integer, r As Range) As String

For Each Item In r
If Item.Value = sv Then getAddress = Item.Address: Exit Function
Next Item

End Function
в EXCEL
функция = ДВССЫЛ(getAddress(1,A1:D15))  работает
а функция = ЯЧЕЙКА("адрес";getAddress(1,A1:D15)) возвращает #ЗНАЧ

в чем разница между двумя аргументами
ДВССЫЛ(ссылка_на_текст;[a1])
и
ЯЧЕЙКА(тип_сведений;[ссылка])
 
а файл у вас есть со всеми этими проблемами?
без файла я могу огульно обвинить вас в тупости, а вы меня в хамстве
только файл все расставит на свои места
Изменено: Ігор Гончаренко - 26 янв 2021 07:42:34
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Vitalee написал:
ДВССЫЛ(ссылка_на_текст;[a1])и ЯЧЕЙКА(тип_сведений;[ссылка])
найдите два различия :) функция ЯЧЕЙКА требует не адрес ячейки, а саму ячейку, как объект.
Т.е. Ваша функция тогда должна выглядеть так:
Код
Function getAddress(sv As Integer, r As Range, sType As String)

For Each Item In r
If Item.Value = sv Then
If sType = "str" Then 'нужен только адрес
getAddress = Item.Address
Else
Set getAddress = Item
End If
Exit Function
End if
Next Item

End Function
а вызывать её так:
Код
= ДВССЫЛ(getAddress(1;A1:D15))
= ЯЧЕЙКА("адрес";getAddress(1;A1:D15;"obj"))
Изменено: Дмитрий(The_Prist) Щербаков - 26 янв 2021 09:05:31 (Не туда "obj" закинул)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
неплохое начало. Ігор Гончаренко. и самое смешное что вы правы.

исходный файл очень большой, при подготовке фрагмента файла понял глупость своего вопроса.
функция getAddress возвращает текст
для преобразования текстовой ссылки в аргумент "ссылка" ее  нужно "заворачивать" в функцию ДВССЫЛ.

тогда все работает.
p.s. файл загрузил , может еще в чем-то покритикуете.  
Изменено: Vitalee - 26 янв 2021 09:02:51
 
Цитата
Vitalee написал:
p.s. файл загрузил ,
это не факт еще  :)  
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
= ЯЧЕЙКА("адрес";getAddress(1,A1:D15); "obj")
а вот с этого места по подробнее хотелось бы.
разве у функции ЯЧЕЙКА есть третий аргумент?
 
Цитата
Vitalee написал:
разве у функции ЯЧЕЙКА есть третий аргумент?
ну ё-маё...уже поправил. Нету третьего. Я просто ошибся - это к UDF относится. Можно же понять хотя бы по коду-то....Писал ДО файла. И на коленке. Да и у Вас там неудобно в сообщении выложено - разделители аргументов то запятые, то точки...Вот и перепутал, а заметил не сразу.
Изменено: Дмитрий(The_Prist) Щербаков - 26 янв 2021 09:07:18
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
спасибо. разобрался. день прожил, узнав что-то новое. и это здорово.
Страницы: 1
Читают тему (гостей: 1)
Наверх