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

VBA Code läuft noch nicht rund/flüssig

VBA Code läuft noch nicht rund/flüssig
21.05.2023 11:57:16
Frank

Hallo allerseits,
nachdem ich mit Hilfe einiger Experten von Euch und Rumgebastele meinerseits zumindest die Funktionalität hinbekommen habe, so wie ich mir das zum jetzigen Zeitpunkt vorstelle, läuft der VBA-Code noch nicht so rund, wie ich es gerne hätte bzw. eine Kleinigkeit fehlt noch. Habe die Datei mal hochgeladen https://www.herber.de/bbs/user/159262.xlsm
Wenn man jetzt im Tabellenblatt "Gesamtdaten" den Februar auswählt, fängt Excel an zu Scrollen, zumindest sieht das in den Spalten E und F so aus. Die Kleinigkeit, die noch fehlt ist, dass beim Auswählen des Monats auch nur die ausgefüllten Zeilen erscheinen und nicht wie es jetzt ist, alle. Ich hab zwar ne Vermutung wo was fehlt -Sub AuswahlMonat(), weiß jedoch nicht, was fehlt. Daher wäre es sehr sehr nett, wenn sich das jemand mal anschaut, das Fehlende einfügt und ggf. Struktur in den Code bringt.
Vielen Dank schon mal im Voraus.
Gruß Frank

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 12:51:41
ralf_b
das liegt wohl daran das die Zeilen einzeln ausgeblendet werden.
ein application.screenupdating = false vor der Ausblende-Schleife könnte das abschalten.
oder die Zeilen werden erst gesammelt und dann gemeinsam ausgeblendet.


AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 13:31:42
Frank
Hallo Ralf,
super, Teil 1 wäre gelöst. Kein Ruckeln (zumindest im Moment) und kein "Scrollen" mehr. Vielen Dank für den Tip. Bleibt noch Problem 2.
Sub AuswahlMonat()
    Dim i&
    With Tabelle2
    Application.ScreenUpdating = False
        .Rows("10:375").EntireRow.Hidden = False
        For i = 10 To .Cells(Rows.Count, 1).End(xlUp).Row
            If Format(.Cells(i, 1), "mmmm") > .Cells(9, 1) Then .Rows(i).EntireRow.Hidden = True
        Next i
    End With
End Sub
Für mich liegt das Problem in der Schleife und zwar hier:
For i = 10 To .Cells(Rows.Count, 1).End(xlUp).Row
hier wird ja Excel mitgeteilt, bis zur letzten Zeile zu gehen, wenn ich das richtig verstehe. Oder liege ich da falsch?
Gruß Frank


Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 13:44:37
ralf_b
und, welche ist die letzte benutzte Zeile, deiner Meinung nach?
der Code sagt 69.
Was du wahrscheinlich meinst ist der zusätzlich mit Rahmen formatierte Bereich. Den braucht es nicht wenn dort keine Daten drin stehen.


AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 14:18:46
Frank
Na die Zeile 69, weil dort der 01. März drin steht. Es sollen aber nur die Zeilen angezeigt werden, die vom Datum her zu dem ausgewählten Monat passen. Und das bekomme ich nicht hin. Ich weiß, das der Teil mit .End(xlUp).Row völlig falsch ist


AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 15:22:54
ralf_b
ich kann dir nicht folgen.
beim Wechsel des Monatsdropdowns werden nur die Zeilen angezeigt wo das Datum zum Monat passt.
.End(xlUp).Row ist nicht falsch.


Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 15:48:36
Frank
Eben nicht, zumindest nicht bei mir. Wenn ich den Januar auswähle, werden mir die Zeilen 10-40 angezeigt, was auch richtig ist und die Zeilen 70-375. Beim Februar 41-68 und 70-375. Und das darf bzw. soll nicht sein. Die Zeilen bis 375, wo kein Datum drin steht, sollen nicht angezeigt werden.


AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 20:29:31
ralf_b
ok, das ist bei mir auch so. Aber der leere aber formatierte und mit Formeln versehene Bereich bis 375 ist überflüssig und sollte erst befüllt werden wenn Daten vorne eingetragen werden.
so wie es jetzt ist kannst du die 375 fix setzen.
  For i = 10 To 375            
            If Format(.Cells(i, 1), "mmmm") > .Cells(9, 1) Or _
               .Cells(i, 1) = "" Then .Rows(i).EntireRow.Hidden = True
        Next i


Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
21.05.2023 20:33:12
Luschi
Hallo Frank,

hier mal meine gemachten Änderungen mit ein paar Kommentarzeilen dazu; achten auch auf die eingefügten Application.EnableEvents-Befehle.

https://www.herber.de/bbs/user/159265.xlsm

Gruß von Luschi
aus klein-Paris


AW: VBA Code läuft noch nicht rund/flüssig
22.05.2023 08:20:36
Frank
Guten Morgen,

@ Ralf wir sind auf der Zielgeraden. Die Funktionalität, wie ich es mir vorstelle, ist gegeben. Nur meine Maus entwickelt sich zum Kreisel, was heisst, es dauert 2-3 Sekunden, bis sich die Daten aktualisieren.

@Luschi bin noch dabei, deine Änderungen nachzuvollziehen. Was die Änderungen im oberen Teil schon bringt, ist ja gewaltig. Flüssig und rasend schnell. Hätte nicht gedacht, was 4 kleine Zeilen bringen. Bei den Änderungen in "Auswahl Monat" steige ich noch nicht durch, was diese bewirken bzw. sollen. Warum bis Zeile 375? Gedacht ist, dass ich das gesamte Jahr eintrage. Gehe ich richtig in der Annahme, das Du bei diesen Änderungen nicht berücksichtigt hast, dass die leeren Zeilen - wie Ralf`s Lösung es jetzt macht, ausgeblendet werden. Jetzt müsste man nur noch Ralf´s Lösung mit deiner kombinieren, dann hätte ich es endlich. Die Kommentare sind für mich sehr hilfreich. So weiß ich wenigstens, wo genau ich in der Hilfe schauen muss.
Gruß Frank


Anzeige
VBA Code läuft jetzt rund und flüssig
22.05.2023 09:12:40
Frank
Ich habs, zumindest glaub ich das. Man tausche einfach
For i = 10 To .Cells(.Rows.Count, 1).End(xlUp).Row
gegen
For i = 10 To 375
und wie es aussieht, funktioniert es und es läuft flüssig und rund. Falls es Einwände geben sollte, bitte Bescheid sagen. Ansonsten vielen vielen Dank für Eure Hilfe.
Lg Frank


Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
22.05.2023 09:51:04
GerdL
Hallo Frank!

Sub AuswahlMonat()
    
    Dim i&, j&, Monat$, R As Range
    
    With Tabelle2
        Monat = .Cells(9, 1)
        Set R = .Cells(375, 1)
        j = .Cells(Rows.Count, 1).End(xlUp).Row
        Application.ScreenUpdating = False
            .Rows("10:375").EntireRow.Hidden = False
            For i = 10 To j
                If Format(.Cells(i, 1), "mmmm") > Monat Then
                      Set R = Union(R, .Cells(i, 1))
                End If
            Next i
        If j  375 Then Set R = Union(R, .Range("A" & (j + 1) & ":A375"))
        R.EntireRow.Hidden = True
    End With
    
    Set R = Nothing

End Sub
Gruß Gerd


Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
22.05.2023 11:38:28
Frank
Hallo Gerd,
irgendwie scheint sich in deiner Lösung ein Fehler eingeschlichen zu haben, denn Excel blendet mir alle Zeilen aus. Die Lösung, die funktioniert, sieht folgendermassen aus:
Sub AuswahlMonat()
    Dim xRg As Range, i&
    With Tabelle2
       .Rows("10:375").EntireRow.Hidden = False
        For i = 10 To 375
            If Format(.Cells(i, 1), "mmmm") > .Cells(9, 1) Then    '' .Rows(i).EntireRow.Hidden = True
                'in xRg werden alle Zellen der Spalte 'A' gesammelt, die ausgeblendet werden müssen!
                'das hat den Hintergrund, daß seit Excel 2013 jeder .Hidden-Befehl
                'eine Neueberechnung des Tabellenblattes intern auslöst
                If xRg Is Nothing Then
                   Set xRg = .Cells(i, 1)
                Else
                    Set xRg = Union(xRg, .Cells(i, 1))
                End If
            End If
        Next i
        If Not xRg Is Nothing Then
           xRg.EntireRow.Hidden = True
           Set xRg = Nothing
        End If
    End With
End Sub
Gruß Frank


Anzeige
AW: VBA Code läuft noch nicht rund/flüssig
22.05.2023 12:20:02
GerdL
Hallo Frank,

ich wollte die Schleife abkürzen u. die Leerzellen in Spalte A am Ende am Stück dazupacken.
Dass es bei dir so nicht funktioniert, nehme ich so zur Kenntnis.

Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige