2017-02-16 2 views
0

Nur auf der Suche nach etwas Unterstützung mit dem folgenden Code-Block. Was ich hier versuche, ist, statische Variablen, die in einem Buchstaben enthalten sind, durch ihren entsprechenden Wert zu ersetzen.Excel VBA Ersetzen mit String zu finden und Array-Wert zu ersetzen

Der Code soll eine Tabelle durchlaufen und ersetzt für jede Zeile unter der Spalte [Variable] jede Instanz dieser Variablen mit der in 'blankLetter' gefundenen. Vielleicht ist dies nicht der beste Weg, um dies zu erreichen ...

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 

Folgende Arbeiten fein:

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

Doch diese Linie hat nichts ersetzen:

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

Ive hatte eine Suche, aber die Trümpfe kommen.

Jede Hilfe wäre großartig.

Mark

+0

Sie sollten besser einige Beispiele Ihrer Daten zeigen. – user3598756

Antwort

0

Jedes Mal durch die Schleife machen Sie eine einzige auf dem ursprünglichen blankLetter Argument ersetzen und das Ergebnis in letterReplace platzieren: nur die letzte von denen, ersetzen Operationen es aus der Funktion als Rückgabewert machen.

Sie müssen weiterhin die Replace-Operationen für dieselbe Variable ausführen.

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

Danke für die Hilfe Tim Williams, funktioniert perfekt und macht Sinn. Prost. –

Verwandte Themen