Excel VBA string ersetzen

Ich nutze in einem Skript folgenden Code zur Umsetzung:
Range(„J1“, Range(„J1“).End(xlDown)).Select

For Each C In Selection
C.Cells(1, 1) = Replace(C.Cells(1, 1), „SO“, „Sonstiges“)
C.Cells(1, 1) = Replace(C.Cells(1, 1), „0“, „Grundwerk“)
C.Cells(1, 1) = Replace(C.Cells(1, 1), „99“, „Sonderausgabe“)
Next

Problem: ich möchte, dass nur in „Grundwerk“ umgesetzt wird, wenn in einer Zelle „0“ steht. Derzeit setzt die Anweisung bei einem Zelleintrag wie „10“ um in „1Grundwerk“

Hallo ML-MUC.

Problem: ich möchte, dass nur in „Grundwerk“ umgesetzt wird,
wenn in einer Zelle „0“ steht. Derzeit setzt die Anweisung bei
einem Zelleintrag wie „10“ um in „1Grundwerk“

Ungetestet: Lass’ bitte 'mal die Anführungszeichen weg bei den Zahlen, die Du ersetzen möchtest (0 ist eine Zahl, „0“ ist ein Text). Möglicherweise haut es dann schon hin.

VG
Carsten

Problem: ich möchte, dass nur in „Grundwerk“ umgesetzt wird,
wenn in einer Zelle „0“ steht. Derzeit setzt die Anweisung bei
einem Zelleintrag wie „10“ um in „1Grundwerk“

Hallo grußlose Münchner Mona Lisa,

vielleicht so:

Sub ML()
Dim C As Range
For Each C In Range("J1", Range("J1").End(xlDown))
 C.Value = Replace(C.Value, "SO", "Sonstiges")
 If C.Value = "0" Then C.Value = Replace(C.Value, "0", "Grundwerk")
 C.Value = Replace(C.Value, "99", "Sonderausgabe")
Next C
End Sub

Gruß
Reinhard

Das führt zum gleichen Resultat.
Danke für die Hilfe.
Gruss
Michael

Grüezi ML-MUC

Ich nutze in einem Skript folgenden Code zur Umsetzung:
Range(„J1“, Range(„J1“).End(xlDown)).Select

Warum .Select…

For Each C In Selection

…und warum jede Zelle einzeln…?

C.Cells(1, 1) = Replace(C.Cells(1, 1), „SO“, „Sonstiges“)
C.Cells(1, 1) = Replace(C.Cells(1, 1), „0“, „Grundwerk“)
C.Cells(1, 1) = Replace(C.Cells(1, 1), „99“, „Sonderausgabe“)
Next

Problem: ich möchte, dass nur in „Grundwerk“ umgesetzt wird,
wenn in einer Zelle „0“ steht. Derzeit setzt die Anweisung bei
einem Zelleintrag wie „10“ um in „1Grundwerk“

Die Replace-Methode hat noch weitere Parameter, die genau dieses Verhalten steuern.

So gehts auf einen Schlag und erst noch so wie Du das gerne hättest :smile:

Public Sub tr\_Replace()
 With Range("J1", Range("J1").End(xlDown))
 .Replace "SO", "Sonstiges", xlWhole
 .Replace "0", "Grundwerk", xlWhole
 .Replace "99", "Sonderausgabe", xlWhole
 End With
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Dankeschön Reinhard, das funktioniert.
Gruss
Michael

Ich merke schon, hier sind Profis am Werk.
Danke für die schnelle Hilfe. Auch dieser Vorschlag führt zum richtigen Ergebnis.
Ich habe wieder einiges gelernt.
Gruss
Michael