Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Löschen&Durchstreichen durch VBA (Zelle)

Löschen&Durchstreichen durch VBA (Zelle)
11.01.2023 18:12:58
Tobi
Hallo zusammen,
gleich noch ein Problem, bei dem ich mich leider geschlagen geben muss... Trotz einem ähnlichen Beitrag von Marcus:"lösche bestimmte Zellen", komm ich nicht auf die Lösung für mein Problem...
Und zwar habe ich eine Tabelle, bei der über eine UserForm Einträge (Zeilen) gelöscht werden könne.
Ich bräuchte jedoch die Funktion, dass wenn man über die UserForm und einem extra Button der über der Tabelle ist, Zeilen "löschen" will, vordefinierte Werte in der Markierten Zeile gelöscht werden, andere dagegen nur durchgestrichen werden.
Heißt konkret, dass die Zeile selbst also bestehen bleibt, die Werte in den ZELLEN der Spalten B bis O sollen durchgestrichen werden und die Werte in den ZELLEN der Spalten S-V, X-AA und AC-AF sollen gelöscht werden.
Ich hoffe es ist nicht zu kompliziert erläutert und jemand kann mir hier weiterhelfen...
Grüße
Tobi

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen&Durchstreichen durch VBA (Zelle)
12.01.2023 19:16:07
Piet
Hallo
du wirst irgendwo im VBA Editor für die Userform das Löschen Makro finden. Könnte so aussehen:
'** vorhandener Code könnte so aussehen
Rows(xxx).EntireRow = Empty 'oder ""
Rows(xxx).EntireRow.ClearContents
'ersetzen durch diesen Code
rw = ActiveCell.Row 'Aktive Zeile ermitteln
Cells(rw, 2).Resirwe(1, 16).Font.Strikethrough = True
Cells(rw, 19).Resirwe(1, 4) = Empty
Cells(rw, 24).Resirwe(1, 4) = Empty
Cells(rw, 29).Resirwe(1, 4) = Empty
Zur Info, zum VBA verstehen: - Cells mit (rw, 2) ist die AktiveZelle in Spalte 2=B, 19=S, 24=X, 29=AC
Mit Resize wird der Bereich um xx Spalten nach rechts erweitert. Dann folgt löschen oder durchstreichen.
mfg Piet
Anzeige
AW: Löschen&Durchstreichen durch VBA (Zelle)
12.01.2023 19:38:01
Tobi
Hallo Piet,
danke für deine Antwort!!!
Probiere ich morgen gleich aus!
Bedeutet dieser teil: Cells(rw, 19).Resirwe(1, 4) = Empty , dass die angesprochenen Zellen von Spalte S bis V dann gelöscht werden?
Grüße
Tobi
AW: Löschen&Durchstreichen durch VBA (Zelle)
12.01.2023 23:37:25
Piet
Hallo Tobi
Korrekt. Der Aufbau von Cells(z, s) ist: z=Zeile als Zahl, s=Spalte als Zahl oder Buchstabe.
Cells(rw, 19).Resize(1, 4) entspricht somit Cells(rw, "S").Resize(1, 4), Spalte als Buchstabe.
Resize vergrössert den Bereich ab "S"+rw nach rechts, aber auch nach unten und als Block.
Cells(rw, 19).Resize(4,1) geht vier Zeilen nach unten; Cells(1, 1).Resize(4,4) = Range("A1:D4")
Resize kannst du auch an Range setzen, z.B. Range("A1")..Resize(4, 4) entspricht "A1:D4"
Wenn du das Standard VBA Wissen drauf hast kannst du es selbst kleine Codes schreiben.
mfg Piet
Anzeige
AW: Schwierigkeiten beim einsetzen
14.01.2023 19:02:42
Tobi
Guten Abend Piet,
ich habe jetzt längere Zeit damit verbracht, zu versuchen deine Lösung in den bestehenden Code einzufügen. Leider aber keinen Erfolg gehabt...
Ich kann immer sehr schwer einschätzen, wie viel Arbeit es ist sowas anzupassen. Falls du es schnell siehst, wie man den da reinbekommt, könntest du mir eventuell nochmal helfen? :/
Das ist die Funktion die ich bis her genutzt habe, welche die gesamten Einträge löscht. Kann man die auf deinen Code "einfach" umändern?:

Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 4 'Start in Zeile 4, Zeile 1 sind ja die Überschriften
Do While Trim(CStr(Tabelle1.Cells(lZeile, 2).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 2).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Viele Grüße
Tobi
ps. Der Code ist (leider) nicht von mir. Den habe ich über einen Kumpel bekommen, der schon mal eine "ähnliche" UserForm gebastelt hat.
Anzeige
AW: Schwierigkeiten beim einsetzen
15.01.2023 15:50:58
Piet
Hallo Tobi
ich habe deinen Code leider noch nicht so ganz durchschaut, kann ihn ohne UF nicht nachbauen.
Erklaere mir bitte mal mit Worten die genaue Funktion. Vor allem habe ich das UserForm_Initialize und die If Zeile mit ListBox1.ListCount noch nicht verstanden?
Wenn ich es richtig verstanden habe geht es dir um diese Zeile, das da nur die Werte gelöscht werden
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Wenn das stimmt brauchst du in meinem Code vor Cells() nur noch Tabelle1 setzen, dann klappt es.
Probier es bitte zuerst in einer Copy Datei aus ibden du dieses eine Zeile durch meinen Code ersetzt.
Solche Tests bitte NIE in der Original Datei durchführen, das könnte wichtige Daten zerstören!
mfg Piet
Anzeige
AW: Schwierigkeiten beim einsetzen
15.01.2023 18:51:37
Tobi
Hallo Piet,
wie ich diese Passage :

Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
"verstanden" habe, wird nach dem Löschen die Liste wieder neu geladen.
Wenn ich vor Cells(), Tabelle1 setze, kommt dieser Fehler und die angepasste Zelle wird markiert. "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Also kannst du mir so quasi nicht mehr weiterhelfen, oder? Hilft es eventuell wenn ich eine Beispiel Excel hochlade?
Gruß Tobi
AW: Schwierigkeiten beim einsetzen
15.01.2023 20:34:35
Piet
Hallo Tobi
freue dich, ich bin extrem hartnaeckig wenn etwas nicht klappt. Das laesst mir keine Ruhe bis es klappt!
Also, der Code muss so aussehen: - Tabelle1.Cells() usw.  -  den Punkt dazwischen nicht vergessen!
Wen du nicht klar kommst lade einfach eine Beispieldatei hoch. Dann schaue ich es mir im Beispiel an.
mfg Piet
Anzeige
AW: Schwierigkeiten beim einsetzen
16.01.2023 15:43:09
Tobi
Hallo Piet,
das ist eine Eigenschaft die für mich ja jetzt ganz nützlich ist :D Ne, aber mal ganz im Ernst! Vielen Dank für deine Hilfe :)
Hier eine Beispiel Datei: https://www.herber.de/bbs/user/157292.xlsm. Sie ist von den Funktionen her ganz ganz ähnlich wie die "organale". Die Originale ist etwas übersichtlicher...
Ich habe die Spalten in Orange markiert, welche durchgestrichen werden sollen und die Spalten die gelöscht werden sollen in grün.
Dein Nachtrag wäre prima. Also wenn man auch über die ListBox Einträge nach dieser Logik "löschen" könnte. Aber auch, wenn man in der Tabelle selbst Zeilen markiert und dann auf den Button oben auf "Löschen" klickt.
Wie ich es schon versuch habe war wie folgt:

Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 4 'Start in Zeile 4, Zeile 1 sind ja die Überschriften
Do While Trim(CStr(Tabelle1.Cells(lZeile, 2).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 2).Value)) Then
rw = ActiveCell.Row 'Aktive Zeile ermitteln
Tabelle1.Cells(rw, 2).Resirwe(1, 16).Font.Strikethrough = True
Tabelle1.Cells(rw, 19).Resirwe(1, 4) = Empty
Tabelle1.Cells(rw, 24).Resirwe(1, 4) = Empty
Tabelle1.Cells(rw, 29).Resirwe(1, 4) = Empty
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
aber das hat leider nicht funktioniert...
Vielleicht weißt du, was da falsch läuft...
Viele Grüße
Piet
Anzeige
AW: Schwierigkeiten beim einsetzen
16.01.2023 16:35:31
Piet
Hallo Tobi
habe din Beispiel geladen, werde zum Essen gerufen. mache für Heute Schluss.
mfg Piet
AW: Löschen&Durchstreichen durch VBA (Zelle)
15.01.2023 20:38:33
Piet
Nachtrag
noch eine Frage, sollen alle Zeilen gelöscht werden die in der ListBox ausgewaehlt wurden?
Wenn ich eine Beispieldatei habe kann man das vielleicht noch besser optimieren?
AW: Löschen&Durchstreichen durch VBA (Zelle)
17.01.2023 17:08:35
Piet
Hallo Tobi
hier meine überarbeitete Beispieldatei, mit vielen Änderungen. Den Text findest du im Beispiel,
Bitte NICHT in deiner Originaldatei testen, ich weiss nicht ob alles einwandfrei funktioniert.
https://www.herber.de/bbs/user/157325.xls
mfg Piet
Anzeige
AW: Thread bald im Archiv!
17.01.2023 18:37:28
Piet
Hallo Tobi
dein Thread wird bald aus dem Server herausfallen. Dann landet er im Archiv, kann nicht mehr bearbeitet werden. Die letzteAntwort kann man aber im Archiv sehen. Wollte nur drauf hinweisen.
mfg Piet
AW: Löschen&Durchstreichen durch VBA (Zelle)
17.01.2023 18:56:26
Tobi
Guten Abend Piet,
wow! Vielen Dank! Die ganzen Fehler waren mir gar nicht bewusst!
Setze mich morgen Vormittag gleich mal ran. Noch bekomm ich beim öffnen der UserForm ein paar Fehler die ich morgen versuche abzustellen und teste sie dann :)
VIELEN DANK und ich melde mich morgen
Tobi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige