Anzeige
Archiv - Navigation
1420to1424
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

Spalten löschen

Spalten löschen
21.04.2015 09:39:15
Markus
Hallo Forum!
In einer Userform soll ein Datum eingegeben werden.
Nach Betätigen eines Buttons sollen alle Spalten gelöscht werden die kleiner dem Datum sind. Das funktioniert auch ganz gut. Allerdings muss ich den Button immer wieder betätigen, bis alles gelöscht wird. Wie soll der Code aussehen damit nur durch einmaligem Betätigen des Buttons alle Datensätze gelöscht werden?
Hier der Code:
Private Sub cmdDelete_Click()
Dim i As Integer, j As Integer
Dim wks As Worksheet
Dim DatWert As Date
Set wks = Worksheets("04_Monitoring_Neuteil")
i = 5 'Zeile 5
j = 8 'Spalte H
If Not IsDate(txtDat) Then
MsgBox "Kein gültiges Datum!", vbCritical, "Falsches Datum"
Exit Sub
End If
txtDat = Format(txtDat, "DD.MM.YYYY")
DatWert = txtDat.Value
With wks
Do While .Cells(i, 8)  ""
If .Cells(i, 8) 

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten löschen
21.04.2015 09:48:40
Nepumuk
Hallo,
du zählst zu Zeile immer 1 dazu. Wenn du nun Zeile 5 löschst, dann rutschen die Zeilen nach oben. Aus der ehemaligen Zeile 6 wird die neue Zeile 5 du machst aber in deinem Makro mit Zeile 6 also der ehemaligen Zeile 7 weiter.
Versuch es mal so:
Private Sub cmdDelete_Click()
    Dim i As Integer, j As Integer
    Dim wks As Worksheet
    Dim DatWert As Date
    
    Set wks = Worksheets("04_Monitoring_Neuteil")
    i = 5 'Zeile 5
    j = 8 'Spalte H
    
    If Not IsDate(txtDat) Then
        MsgBox "Kein gültiges Datum!", vbCritical, "Falsches Datum"
        Exit Sub
    End If
    txtDat = Format(txtDat, "DD.MM.YYYY")
    
    DatWert = txtDat.Value
    
    With wks
        Do While .Cells(i, 8) <> ""
            If .Cells(i, 8) < DatWert Then
                Range(.Cells(i, 1), .Cells(i, 10)).Delete shift:=xlUp
            Else
                i = i + 1
            End If
        Loop
    End With
    
End Sub

Gruß
Nepumuk

Anzeige
AW: ...und deshalb...
21.04.2015 09:54:05
Markus
...mußte ich immer wieder neu beginnen um alle Werte zu löschen.
Danke für den hinweis.
Gruß
Markus

AW: ...und deshalb...
21.04.2015 10:48:42
Werner
Hallo Markus,
Versuch mal das, löscht von hinten nach vorne bis Zeile 5. So hast du das Problem mit dem Überspringen von Zeilen nicht. Habe es aber nicht getestet, schreibe mit dem Tablet.
Außerdem hattest du die Variable j definiert aber im Code nicht verwendet, ich habe gelöscht.
Private Sub cmdDelete_Click()
Dim i As Long
Dim loLetzte AS Long
Dim wks As Worksheet
Dim DatWert As Date
Set wks = Worksheets("04_Monitoring_Neuteil")
If Not IsDate(txtDat) Then
MsgBox "Kein gültiges Datum!", vbCritical, "Falsches Datum"
Exit Sub
End If
txtDat = Format(txtDat, "DD.MM.YYYY")
DatWert = txtDat.Value
loLetzte = wks.cells(Rows.Count, 8).End(xlUp).Row
With wks
For i = loLetzte To 5 Step -1
If .Cells(i, 8) 
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige