Thema Datum  Von Nutzer Rating
Antwort
31.03.2021 13:40:37 Simon
NotSolved
Blau Excel VBA alte Einträge aus Tabelle löschen
31.03.2021 21:47:22 ralf_b
*****
Solved
01.04.2021 10:26:35 Simon
NotSolved
01.04.2021 10:53:06 ralf_b
NotSolved
01.04.2021 11:39:49 Simon
NotSolved

Ansicht des Beitrags:
Von:
ralf_b
Datum:
31.03.2021 21:47:22
Views:
1000
Rating: Antwort:
 Nein
Thema:
Excel VBA alte Einträge aus Tabelle löschen

Hallo,

da find bereits deine Liste durchsucht, benötigst du keine for schleife mit der du nochmals alles durchgehst. Der Vorgang wird ja sicher nach jedem Contracteintrag ausgeführt.    

rngdel sammelt die zur Löschung vorgemerkten Bereiche und am Ende wird gelöscht.  

countifs soll schon mal checken ob die Contractid mehrfach vorkommt. Wenn nicht wird die Sub beendet.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sub AktuelleEintr()
  
Dim z As Long, lZ As Long       'Variablen für meine Zeilen
Dim strContract As String          'Variable für meine Vertrags-ID
Dim rngEintrag As Range            'Range-Variable, die zum Auffinden bestimmter Vertrags-IDs verwendet wird
Dim strStartw As String            'strStartwert für späteren Loop
Dim rngDel As Range
 
With Worksheets("Gesamt DB")   'Ursprünglich eingeführt, da das Makro von einem anderen Sheet gelauncht werden soll
  
    lZ = .Cells(.Rows.Count, 1).End(xlUp).Offset(-1, 0).Row   'lZ Ist meine letzte...... eine Leerzeile am Ende steht
      
    'For z = lZ To 8 Step -1                                                             'In Zeile 8 steht.....Eintrag
         
    strContract = .Cells(lZ, 3).Value                                                 'Unterste .....ct deklariert
     
    If .Cells(lZ, 2).Value = "Fertig" Then                                            'Wenn .... "Fertig" gelabelt ist.
        
       With .Range(.Cells(8, 3), .Cells(lZ - 1, 3))
           
           'Abbruch wenn Id oberhalb nicht vorhanden
           If WorksheetFunction.CountIfs(.Columns(1), strContract) = 0 Then exit sub
      
           Set rngEintrag = .Find(strContract, LookIn:=xlValues, XlLookAt:=xlWhole)   'In meiner........trags-ID suchen
        
       End With
         
        If Not rngEintrag Is Nothing Then
                        
            strStartw = rngEintrag.Address           'strStartwert festlegen für späteren Loop
             
            Do
                If rngEintrag.Offset(0, -1).Value = "In Arbeit" Then   'Wenn ein als .......... rngEintrag besteht
                    Set rngDel = IIf(rngDel Is Nothing, rngEintrag, Union(rngEintrag, rngDel))  'zur Lös ...vorgemerkt                                   
                End If
                With .Range(.Cells(8, 3), .Cells(lZ - 1, 3))
                    Set rngEintrag = .FindPrevious(after:=rngEintrag)           'Nächste ereinstimm................                              
                End with
                 
            Loop While Not rngEintrag Is Nothing And rngEintrag.Address <> strStartw   'Soll ..........durchchecken.
        End If
    End If
      
    if not rngdel is nothing then rngDel.EntireRow.Delete xlShiftUp 'löschen
 
End With
 
Set rngDel = Nothing: Set rngEintrag = Nothing
 
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.03.2021 13:40:37 Simon
NotSolved
Blau Excel VBA alte Einträge aus Tabelle löschen
31.03.2021 21:47:22 ralf_b
*****
Solved
01.04.2021 10:26:35 Simon
NotSolved
01.04.2021 10:53:06 ralf_b
NotSolved
01.04.2021 11:39:49 Simon
NotSolved