2017-02-16 1 views
0

Просто ищите некоторую помощь со следующим блоком кода. То, что я пытаюсь сделать здесь, заключается в замене статических переменных, содержащихся в письме, с их соответствующим значением.Excel VBA Замените с помощью String значение Find и Array для замены

Код предназначен для циклического перемещения по таблице, и для каждой строки под столбцом [Переменная] заменяет любой экземпляр этой переменной тем, что находится в 'blankLetter'. Может быть, это не самый лучший способ для достижения этой цели ...

Public Function letterReplace(blankLetter As String, letterArray As Dictionary) As String 
'Lookup the variable table and for each variable replace the instance of that in the array 
Application.ScreenUpdating = False 
Dim row As Range 
Dim temp As String 
For Each row In [varTable[Variable]].Rows 
    'temp = "<PURVNAME>" 
    temp = row.Value 
    letterReplace = Replace(blankLetter, temp, letterArray(temp)) 
Next 
Application.ScreenUpdating = True 
End Function 

следующие работы прекрасно:

letterReplace = Replace(blankLetter, temp, letterArray(temp)) 

Ive было:

letterReplace = Replace(blankLetter, "<PURVNAME>", letterArray("<PURVNAME>")) 

Однако эта линия ничего не заменит поиск, но идущие козыри.

Любая помощь будет отличной.

Марк

+0

Вам лучше показать некоторые примеры ваших данных. – user3598756

ответ

0

Каждый раз через петлю вы один заменить на оригинальный blankLetter аргумента и поместить результат в letterReplace: только последний из них заменить операции сделает его функции в качестве возвращаемого значения.

Вам необходимо продолжить выполнение операций замены на одну и ту же переменную.

Public Function letterReplace(blankLetter As String, letterArray As Dictionary) As String 
'Lookup the variable table and for each variable replace the 
' instance of that in the array 

    Dim row As Range, retVal As String 
    Dim temp As String 

    retVal = blankLetter 
    For Each row In [varTable[Variable]].Rows 
     temp = row.Value 
     retVal = Replace(retVal, temp, letterArray(temp)) 
    Next 

    letterReplace = retVal 
End Function 
+0

Спасибо за помощь Тим Уильямс, прекрасно работает и имеет смысл. Приветствия. –

Смежные вопросы