Registriert seit: 30.09.2021
Version(en): 2016
Grüß Gott,
ich scheitere aktuell an folgender Problematik
In der Spalte D3 werden Daten eingebenen zb. D3 = Maus D4 = Monitor usw usw.
Nun prüfe ich über VBA ab, ob diese Daten bereits in der Spalte C vorhanden sind.
ist dies der Fall, soll der Inhalt der entsprechende(n) Zelle(n) gelöscht werden.
Meine Lösung sieht momentan so aus:
Sub Ersetzen()
Dim lngZeile As Long
Dim rngZelle As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
lngZeile = Range("C" & Rows.Count).End(xlUp).Row
Range("C3:C99" & lngZeile).Select
For Each rngZelle In Selection
rngZelle.Value = Replace(rngZelle.Value, Range("D3"), "")
Next rngZelle
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Das Problem hier ist aber, dass ich nicht weiß, wie ich ihm sage, dass er nicht nur die Zelle D3 prüfen soll, sondern alles von D3 bis D99
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
Code:
Sub Ersetzen()
Application.Calculation = xlCalculationManual
Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row).Replace Range("D3").Value, ""
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Gruß Uwe
Registriert seit: 30.09.2021
Version(en): 2016
(30.09.2021, 10:52)Kuwer schrieb: Hallo Uwe,
also dein Code sieht schonmal viel angenehmer aus und arbeitet auch viel schneller.
Aber es geht darum, dass er alles ab D3 bis D99 prüfen soll und nicht nur die Zelle D3
Code:
Sub Ersetzen()
Application.Calculation = xlCalculationManual
Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row).Replace Range("D3").Value, ""
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Gruß Uwe
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
30.09.2021, 11:19
(Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2021, 11:24 von Kuwer.)
Hallo,
das hatte ich übersehen. Dann doch mit Schleife:
Code:
Sub Ersetzen()
Dim rngZelle As Range
Application.Calculation = xlCalculationManual
For Each rngZelle In Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row)
rngZelle.Replace Cells(rngZelle.Row, 4).Value, ""
Next rngZelle
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Gruß Uwe
Du meinst es aber wohl so?
Code:
Sub Ersetzen()
Dim rngZelle As Range
Application.Calculation = xlCalculationManual
For Each rngZelle In Range("D3:D" & Range("D" & Rows.Count).End(xlUp).Row)
Range("C3:C99").Replace rngZelle.Value, ""
Next rngZelle
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Gruß Uwe
Registriert seit: 30.09.2021
Version(en): 2016
(30.09.2021, 11:19)Kuwer schrieb: Hallo Uwe
Fast perfekt
was jetzt noch Fehlerhaft ist:
Wenn ich zb "Monitor 1" und "Monitor 2" habe, und ich möchte das er "Monitor 1" löscht, dann löscht er überall wo "Monitor" steht, die "2" bleibt in dem Fall stehen
Es gab doch eine Möglichkeit ihm den exakten Wortlaut zu "befehlen"
das hatte ich übersehen. Dann doch mit Schleife:
Code:
Sub Ersetzen()
Dim rngZelle As Range
Application.Calculation = xlCalculationManual
For Each rngZelle In Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row)
rngZelle.Replace Cells(rngZelle.Row, 4).Value, ""
Next rngZelle
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Gruß Uwe
Du meinst es aber wohl so?
Code:
Sub Ersetzen()
Dim rngZelle As Range
Application.Calculation = xlCalculationManual
For Each rngZelle In Range("D3:D" & Range("D" & Rows.Count).End(xlUp).Row)
Range("C3:C99").Replace rngZelle.Value, ""
Next rngZelle
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Gruß Uwe
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
Code:
Range("C3:C99").Replace rngZelle.Value, "", xlWhole
Gruß Uwe
Registriert seit: 30.09.2021
Version(en): 2016
(30.09.2021, 12:35)Kuwer schrieb: Hallo,
Tausend dank
Code:
Range("C3:C99").Replace rngZelle.Value, "", xlWhole
Gruß Uwe