Как вы пишете функцию в VBA, которая позволяет пользователю вводить диапазон в качестве параметра и устанавливать верхнюю / нижнюю границы для этого диапазона (в случае, если они вводят целый столбец)?
У меня есть функция, которая просматривает ячейку и определяет, содержит ли она какие-либо слова, перечисленные в глоссарии (я просто позволяю пользователю выбрать столбец (диапазон), который является списком терминов глоссария. В настоящее время я использую для каждого ячейка в цикле диапазона, чтобы пройти диапазон, но я не хочу тратить шаги, проходящие через ВСЕ ячейки в столбце А, даже если я сначала проверяю, есть ли Len (cell.value) <> 0.
Я предполагаю, что это сделано с помощью оператора select, но теперь я уверен, как сделать это для диапазона, который был передан в качестве параметра (я называю это cell_range прямо сейчас).
Любая помощь будет принята с благодарностью!
Добавлена информация:
Тип данных диапазона имеет тип string. Это список английских слов (терминов глоссария), и я пишу функцию, которая будет смотреть на ячейку и проверять, включает ли она какие-либо термины из глоссария. Если это так, код возвращает термин глоссария плюс смещенную ячейку справа (переведенный термин).
РЕДАКТИРОВАТЬ (06.20.11)
Доработанный код благодаря экспериментам и предложениям ниже. Он берет ячейку и ищет в ней любые глоссарии. Возвращает список терминов плюс переведенные термины (второй столбец в глоссарии).
Function FindTerm(ByVal text As String, ByVal term_list As range) As String
Static glossary As Variant
Dim result As String
Dim i As Long
glossary = range(term_list.Cells(1, 1), term_list.Cells(1, 2).End(xlDown))
For i = 1 To UBound(glossary)
If InStr(text, glossary(i, 1)) <> 0 Then
result = (glossary(i, 1) & " = ") & (glossary(i, 2) & vbLf) & result
End If
Next
If result <> vbNullString Then
result = Left$(result, (Len(result) - 1))
End If
FindTerm = result
Функция завершения