Функция (входные параметры)

Программирование на Visual Basic for Applications
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Функция (входные параметры)

Сообщение Vitaly1 » 28.03.2003 (Пт) 16:46

Имеется функция поиска строки(я знаю что подобная есть в Excel, но она у меня сбоит!):

Function Поискстроки(ДиапазонПоиска, Искать, Столбец) As String

For Each r In Range(ДиапазонПоиска)
If r.Value = Искать Then
Поискстроки = Столбец + CStr(r.Row)
Exit Function
End If
Next r

End Function


Если я вставляю функцию в ячейку и ввожу диапазон $А$1:A63 без кавычек, функция выдает пустое значение. Я конечно могу поставить кавычки, но при копировании формулы тогда не будет наращиваться координата A63.
Можноли объявить каким либо типом входной параметр ДиапазонПоиска что бы избежать такой ситуации, и чтобы можно было вводить диапазон $А$1:A63 без кавычек??? :cry:

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 28.03.2003 (Пт) 17:12

Ура, я сам нашел как сделать! :D
Function Поискстроки(ДиапазонПоиска as range, Искать, Столбец) As String

For Each r In ДиапазонПоиска
If r.Value = Искать Then
Поискстроки = Столбец + CStr(r.Row)
Exit Function
End If
Next r

End Function


причем объявлять ДиапазонПоиска как range не обязательно, можно вообще без объявления типа :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.03.2003 (Сб) 9:24

А почему сбоит функция-то? Это великая функция, и не должна она сбоить.
Имеется в виду, конечно же, функция Match, единственная фишка которой в том, что в несортированном диапазоне надо искать, установив последний параметр в ноль.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 31.03.2003 (Пн) 10:13

Функция:
=ПОИСКПОЗ()

действительно третий тип поиска не указывал, а что там указывать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.03.2003 (Пн) 15:25

Если диапазон отсортирован по возрастанию, то указывай 1. Если по убыванию -1. Если не упорядочен, то 0.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 31.03.2003 (Пн) 15:42

Спасибо, теперь понятно почему збоило. Но я немного свою фукцию модернизировал и она теперь выдает значение ячейки в указанном столбце и в поисковой строке.
Может, конечно я функцию не знаю. Мне приходилось использовать аж 3 функции, первую из которых, я сейчас не помню как называется
=преобразованиестрокиадресавадрес(адресс(поискпоз(),))
может есть проще путь, тобишь функция прямая. :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.04.2003 (Вт) 8:17

=Индекс(ГдеИскать, НомерСтроки, НомерСтолбца)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 62

    TopList