Мне нужно написать функцию для выполнения ряда подстановок в строку на основе поиска значений в листе.
Мое намерение состоит в том, чтобы выполнить итерацию по списку пар замещения на листе и вызывать функцию рабочей книги «заменять» для каждой итерации.
Function multiSub(original As Range, replaceList As Range)
Dim temp1 As String
Dim temp2 As String
Dim temp3 As String
' temp1 = replaceList.Offset(0, 0).Value
' temp2 = replaceList.Offset(0, 1).Value
temp1 = "from"
temp2 = "to"
multiSub = Application.WorksheetFunction.Substitute(original, temp1, temp2)
End Function
Если вы возьмете код как есть, тогда он будет работать, так как он заменит слово «от» словом «на», если первый аргумент в созданной мной функции указывает на ячейку со словом « откуда-то в этом.
Если, однако, я закомментирую назначения для temp1 или temp2 и откомментирую другие строки, я получу #Value! ошибка в рабочем листе.
Интересно, что даже если я назначу несвязанную переменную (скажем, temp3) для одного из этих смещений диапазона и сохраню temp1 и temp2 как относящиеся к жестко закодированным строкам, она все равно не будет работать таким же образом.
Почему это происходит и как я могу это исправить?