2016-08-02 2 views
1

Ich weiß, das ist völlig falsch, aber im Moment weiß ich wirklich nicht, wie es geht.VBA (Microsoft Excel) ersetzen Array mit String

In Microsoft Excel möchte ich alle Werte in der Zeichenfolge "OldValues" durch eine feste Zeichenfolge "NewValue" ersetzen. Wie ist das möglich?

LBound und Ubound sind falsch zu verwenden, oder?

Sub Replace() 
Dim sht As Worksheet 
Dim OldValues As Variant 
Dim NewValue As String 
Dim x As Long 

OldValue = Array("old1","old2","old3") 
NewValue = "allnew!" 

    For x = LBound(OldValue) To UBound(NewValue) 

     For Each sht In ActiveWorkbook.Worksheets 
     sht.Cells.Replace What:=OldValue(x), Replacement:=NewValue(x), _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
     Next sht 

    Next x 

End Sub 

Antwort

4

Der Code sollte mit geringfügigen Änderungen arbeiten werden: NewValue kein Array ist, so UBound(NewValue) wird eine Fehlermeldung angezeigt. Sie müssen stattdessen UBound(OldValues) in Ihrer Schleife gehen und entfernen Sie die (x) nach NewValue in der Replace.

Sub Replace() 
Dim sht As Worksheet 
Dim OldValues As Variant 
Dim NewValue As String 
Dim x As Long 

OldValues = Array("old1","old2","old3") 
NewValue = "allnew!" 

    For x = LBound(OldValues) To UBound(OldValues) 

     For Each sht In ActiveWorkbook.Worksheets 
     sht.Cells.Replace What:=OldValues(x), Replacement:=NewValue, _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
     Next sht 

    Next x 

End Sub 
+0

Nice one. Kenne nicht richtig die Funktion LBound & Ubound (wie ich es verstehe, existieren sie, um eine Schleife zu erstellen, die auf einem Array sucht?), Also wusste ich nicht, wie man es arbeitet. –

+1

Wenn sie mit einem Array verwendet werden, beziehen sie sich auf die oberen und unteren Indexgrenzen, also mit dem Array von 'Array (" old1 "," old2 "," old3 ")' - 'LBound' wird 0 sein und' UBound' wird sein 2 – Jordan

+0

@MiguelRasquinho Alternativ können Sie mit einer Variablen der Typvariante und einer For Each-Schleife über ein Array iterieren. 'Dim x als Variante: Für jedes x in OldValues' –