Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
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

CommandButton Lösche Zeile xy

CommandButton Lösche Zeile xy
11.05.2016 16:02:37
Alex
Hallo liebe Gemeinde,
der Werner war so freundlich mir für einen CommandButton ein Makro zu tippern, mittels welchem die letzte Zeile einer Tabelle gelöscht wird.
Dim loLetzte As Long
With Sheets("Tabelle1") 'anpassen
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile in Spalte A, Spalte anpassen
.Cells(loLetzte, 1).EntireRow.Delete
End With
Jetzt die nächste Frage:
Wenn ich bereits 15 Zeilen mittels Userform "kreiert" habe, ist es dann möglich mittels dem CommandButton "Löschen" eine beliebige Zeile, z.B. Zeile 6 zu löschen?
Quasi mit MsgBox "Welche Zeile soll gelöscht werden" und dann eintragen...
Liebe Grüße Alex

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandButton Lösche Zeile xy
11.05.2016 16:13:39
Werner
Hallo Alex,
Dim loZeile As Long
With Sheets("Tabelle1")
loZeile = Application.InputBox("Welche Zeile möchten Sie löschen", "Löschvorgang", 0, Type:=1)
If loZeile = 0 Then Exit Sub
Rows(loZeile).Delete Shift:=xlUp
End With
Gruß Werner

AW: CommandButton Lösche Zeile xy
11.05.2016 16:27:02
Sdravi
Das bräuchte ich auch nur das bei mir alle Zeilen mit Wert 0 in B2
gelöscht werden sollen!
Mfg

AW: @Sdravi
11.05.2016 16:48:08
Werner
Hallo,
Dim i As Long
Application.ScreenUpdating = False
With Sheets("Tabelle1") 'anpassen
For i = .Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
If .Cells(i, 2).Value = 0 Then Rows(i).Delete
Next i
End With
Application.ScreenUpdating = True
Gruß Werner

Anzeige
AW: @Sdravi
11.05.2016 22:57:18
Sdravi
hy, es funktioniert fast, wenn ich nur Werte übernehme und dann dein Makro starte macht es _ genau das was es soll, da aber meine Werte per sverweis eingetragen sind löscht er wahllos alle einträge

=WENN(ODER(DSM!$F:$F="LIF";DSM!$F:$F="LIF");DSM!A3;"0")
Jetzt habe ich mir gedacht eine Kopie der Tabelle zu erstellen das bekomm ich noch hin ;-)
Private Sub CommandButton2_Click()
Sheets("DRS").Select
Sheets("DRS").Copy
Windows("test.xlsm").Activate
End Sub
aber wie bekomm ich es hin das er mir die Werte in der kopie schreibt und nicht die verweise?
Und statt Mappe3 soll DRS.xlsm als name vorkommen

Anzeige
AW: @Sdravi
11.05.2016 23:56:30
Sdravi
So funktioniert es ...

Private Sub CommandButton1_Click()
Sheets("Test").Select
Sheets("Test").Copy
Sheets("Test").Range("A1:H15").Copy
Sheets("Test").Range("A1:H15").PasteSpecial xlValues
End Sub
Private Sub CommandButton2_Click()
Dim i As Long
Application.ScreenUpdating = False
With Sheets("Test") 'anpassen
For i = .Cells(Rows.Count, 3).End(xlUp).Row To 3 Step -1
If .Cells(i, 3).Value = 0 Then Rows(i).Delete
Next i
End With
Application.ScreenUpdating = True
End Sub

AW: @Sdravi, dann ist ja gut
12.05.2016 10:16:02
Werner
Hallo,
was du mit der Aussage im vorherigen Beitrag "löscht wahllos" meinst ist mir nicht ganz klar. Das Markro löscht Zellen in denen eine 0 steht, egal ob die händisch eingetragen oder das Ergebnis einer Formelauswertung ist.
Aber du hast ja eine für deine Verhältnisse passende Lösung gefunden.
Trotzdem ein paar Änderungen, das Ganze muss man nicht verteilen und dann über zwei unterschiedliche Buttons ausführen. Es lässt sich in ein Makro packen, welches dann einem Button zugeordnet werden kann.
Zudem habe ich ein paar Änderungen in deinem Kopier-Code gemacht.
Private Sub CommandButton1_Click()
Dim i as Long
Application.ScreenUpdating = False
With Sheets("Test")
.Range("A1:H15").Value = .Range("A1:H15").Value 'Formelergebnisse durch Werte ersetzen
For i = .Cells(Rows.Count, 3).End(xlUp).Row To 3 Step -1
If .Cells(i, 3).Value = 0 Then Rows(i).Delete
Next i
End With
Application.ScreenUpdating = True
End Sub
Gruß Werner

Anzeige
AW: @Sdravi, dann ist ja gut
12.05.2016 19:20:40
Sdravi
hy Werner
wenn du in deinem geänderten Code änderst das es er nicht die Mappe Updatet sondern eine neue erstellt und dann Formeln durch Werte ersezt sowie zeilen mit 0 löscht

AW: @Sdravi, dann ist ja gut
12.05.2016 20:42:50
Werner
Hallo,
geht schon, dann stellt sich aber folgende Frage. Was ist, wenn du das Makro ein weiteres Mal ausführst? Ich nehme ja nicht an, dass dann wieder ein neues Blatt angelegt werden soll.
Wie wäre es denn vorab schon ein Blatt anzulegen, dann durch das Makro die Daten auf diesem Blatt zu löschen, anschließend Daten kopieren nur Werte einfügen und am Schluss alle Zeilen mit 0 löschen.
Wenn nicht solltest du genauer erklären was du genau vor hast.
Gruß Werner

Anzeige
AW: @Sdravi, dann ist ja gut
12.05.2016 20:51:56
Sdravi
Also Die Hauptdatei muss als Vorlage dienen die holt sich die Daten durch Verweise und, und ich muss einzelne Tabellen an verschiedene Leute senden und die sollen keine formeln sehen sondern nur Werte und ich möchte im gegenzug nicht immer die Formeln neu eingeben. Deswegen soll es so ablaufen:
1.Tabelle Duplizieren
2.Formeln durch Werte ersetzen
3.Zeilen mit Wert 0 in Celle B Löschen
4.Datei als Anhang versenden
5.Datei Löschen
Und das ganze jeden Tag aufs neue aus der Vorlage.
mfg

AW: @Sdravi, dann ist ja gut
13.05.2016 07:15:23
Werner
Hallo,
leg dir ein zusätzliches Tabellenblatt z.B. "Mail-Versand" an.
Public Sub test()
Dim i As Long
Application.ScreenUpdating = False
Sheets("Mail-Versand").UsedRange.Delete 'Blattname anpassen
Sheets("Test").Range("A1:H15").Copy
Sheets("Mail-Versand").PasteSpecial xlValues 'Blattname anpassen
With Sheets("Mail-Versand") 'Blattname anpassen
For i = .Cells(Rows.Count, 3).End(xlUp).Row To 3 Step -1
If .Cells(i, 3).Value = 0 Then Rows(i).Delete
Next i
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Bei jedem Ausführen des Makro werden zuerst die Daten im Blatt Mail-Versand gelöscht. Dann werden die Daten aus dem Blatt Test ins Blatt Mail-Versand kopiert -nur die Werte. Anschließend werden die Zeilen mit einer 0 in Spalte C gelöscht.
Aus dem Versand per E-Mail halte ich mich raus, da hast du ja wohl schon was.
Gruß Werner

Anzeige
AW: CommandButton Lösche Zeile xy
11.05.2016 16:28:36
Alex
Hallo Werner,
vielen Dank.
Makro funktioniert tadellos!!! :)
Sauber, danke danke danke...
Kann ich die Inputbox noch in der Größe verändern?
LG Alex

AW: CommandButton Lösche Zeile xy
11.05.2016 16:49:28
Nepumuk
Hallo,
ersetze die Inputbox durch ein Userform, das kannst du gestalten wie du willst.
Gruß
Nepumuk

AW: Danke für die Rückmeldung.
11.05.2016 16:51:08
Werner
Hallo Alex,
nach meinem Wissen nicht bei einer InputBox.
Dann müsste man mit einer UserForm und einer TextBox arbeiten.
Gruß Werner

AW: Danke für die Rückmeldung.
11.05.2016 16:55:02
Nepumuk
Hallo Werner,
die Größe einer Inputbox lässt sich schon ändern aber der Code ist für einen VBA-Anfänger 3 Nummern zu groß.
Gruß
Nepumuk

Anzeige
AW: @Nepumuk
11.05.2016 21:30:17
Werner
Hallo Nepumuk,
danke für den Hinweis, dass es geht. Das übersteigt meine rudimentären Kenntnisse ganz sicher.
Wenn es denn so schwierig ist, dann macht es ja doppelt Sinn, das dann über eine UserForm zu regeln.
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige