Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1916to1920
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
per VBA Zeilen dynamisch aus/einblenden
06.02.2023 13:17:34
mmarkus
Hallo zusammen
Ich habe aktuell ein VBA Problem, welches ich mit meinen Copy-paste Kenntnissen nicht lösen kann, ev kann mir einer von Euch auf die Sprünge helfen.
Kurzfassung:
Ich möchte in einer Datenliste per Button dynamisch Zellen ausblenden, um so eine Filterung zu erreichen. Es müssen alle Zeilen ausgeblendet werden, ausser jene welche auf einem anderen Blatt in einem Bereich (per Formel) aufgeführt sind.
Da ich Excel 2016 habe steht FILTER() leider nicht zur verfügung.
Langfassung
In meiner Datentabelle "Daten" ist eine Liste mit Start und Ziel Koordinaten. Zielkoordinaten sind Eindeutig, können aber jeweils wieder Startkoordinaten sein. Wenn man sich dies wie Strassen vorstellt, ergibt sich ein beliebig verästelter Baum. Jede Strasse hat eine eindeutige ID in Spalte F (Zeilennummer)
In meinem Auswertungs Blatt zeige ich mir diesen Weg von einem beliebigen Ziel (Dropdown in B3) bis zum ersten Start an. (mit SVERWEIS)
Gerne möchte ich nun die Datenliste genau gleich Filtern/Sortieren wie die Auswertungsliste, um ohne gross zu suchen Änderungen vorzunehmen. Sprich in der Datentabelle alle Zeilen ausblenden ausser die Zeile steht in der Auswertungstabelle im Bereich J3:J11
Ich dachte an einfolgendes konstrukt:
- alle Zeilen in "Daten" ausblenden welche in Spalte B gefüllt sind
- Schleife:
i=3
Zeile i einblenden, fals i im Bereich J3:J11 vorkommt
i inkrementieren
Schleife wiederholen bis i bei 3000 ankommt
Ich hoffe ihr könnt mir dabei helfen. Eine Beispieldatei liegt bei.
https://www.herber.de/bbs/user/157663.xlsx
Vielen Dank

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per VBA Zeilen dynamisch aus/einblenden
06.02.2023 13:31:42
Rudi
Hallo,
Sub aaa()
  Dim i As Integer
  Sheets("Daten").Rows.Hidden = True
  With Sheets("Auswertung")
    For i = 3 To 11
      If IsNumeric(.Cells(i, 10)) Then Sheets("daten").Rows(.Cells(i, 10)).Hidden = False
    Next i
  End With
End Sub
Gruß
Rudi
AW: per VBA Zeilen dynamisch aus/einblenden
06.02.2023 23:00:50
mmarkus
Hallo Rudi
Danke für dein Code, hat funktioniert, musste nur der .Rows einen festen Wert geben, sonnst hatte er einen Fehler ausgegeben

Private Sub CommandButton1_Click()
Dim i As Integer
  Sheets("Daten").Rows("3:3000").Hidden = True
  With Sheets("Auswertung")
    For i = 3 To 11
      If IsNumeric(.Cells(i, 10)) Then Sheets("Daten").Rows(.Cells(i, 10)).Hidden = False
    Next i
  End With
End Sub
Private Sub CommandButton2_Click()
Sheets("Daten").Rows("3:3000").Hidden = False
End Sub
hat funktioniert.
Wäre es auch möglich alle Zeilen auszublenden bis zur in Zelle J1 angegebenen Zeile? zB in Zelle J1 steht eine 20, dann werden die Zeilen 3-20 ausgeblendet
Anzeige
AW: per VBA Zeilen dynamisch aus/einblenden
07.02.2023 08:37:56
Yal
... liegt daran, dass Excel nicht akzeptiert, dass alle Zeilen ausgeblendet werden. Es muss mindestens eine sichtbar sein.
VG
Yal
AW: per VBA Zeilen dynamisch aus/einblenden
06.02.2023 20:23:52
Yal
Hallo Markus,
ich bin mir nicht ganz sicher zu verstehen, was beschrieben ist. Der Code von Rudi bringt mich ein Bischen weiter.
Da es in der Spalte Auswertung!J3:Jxx viele Wiederholung geben wird, könnte sich löhnen, einen Dictionary einzusetzen: jede Zahl wird nur einmal gespeichert, wenn diese als Schlüssel der Dictionary verwendet wird. Nicht kurzer, nicht schneller und auch nicht besser, aber der Vorgehensweise kann immer wieder gerbaucht werden.
Sub ZeileInDaten_ausblenden()
Dim Q As Range 'Quelle, Zelle im Blatt "Auswertung"
Dim Z  'Ziel, also Zelle im Blatt "Daten"
Dim Dic As Object
'Dictionary aufbauen
    Set Dic = CreateObject("Scripting.Dictionary")
    With Worksheets("Auswertung")
        For Each Q In Range(.Range("J3"), .Cells(Rows.Count, "J").End(xlUp))
            If IsNumeric(Q.Value) Then Dic(Q.Value) = 1
        Next
    End With
'Einträge aus dem Dictionary durchgehen
    Application.ScreenUpdating = False
    With Worksheets("Daten")
        .Rows.Hidden = False 'alles einblenden
        For Each Z In Dic.Keys
            .Rows(Z).Hidden = True 'einzel ausblenden
        Next
    End With
    Set Dic = Nothing
    Application.ScreenUpdating = True
End Sub
VG
Yal
Anzeige
AW: per VBA Zeilen dynamisch aus/einblenden
06.02.2023 23:04:54
mmarkus
Hallo Yal
Danke für dein Code. Auswertung!J3:Jxx ist prinzipbedingt immer eindeutig, daher können keine Wiederholungen vorkommen. Mit dem Code von Rudi hats funktioiert

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige