VisualBasic Makro - bestimmte Zeilen eines Zeitintervalls anzeigen

Suprimos

Lieutenant
Registriert
Sep. 2009
Beiträge
516
Hallo zusammen,

habe auf Arbeit folgendes Problem.

Ich habe eine Tabelle in der verschiedene Werte gespeichert werden mit dem jeweiligen Eingabedatum.

Nun möchte ich mir gerne über ein Makro nur die Zeilen anzeigen lassen, die in einem bestimmten Intervall liegen.
Z.b. vom 01.01.2014 bis 15.01.2014

Ich bin leider absoluter Anfänger was Makros angeht.
Ich habe dazu aber einen Code im Netz gefunden, mit dem ich mir Spalten anzeigen lassen, welche das Datum des Eingabefeldes enthalten:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim loZeile As Long
     If Target.Address = "$X$6" Then
        Application.ScreenUpdating = False
        ActiveSheet.UsedRange.Rows.Hidden = False
        If Target <> "" Then
            For loZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 6 Step -1
                Cells(loZeile, 1).EntireRow.Hidden = Application.CountIf(Rows(loZeile), Target) = 0
            Next loZeile
        End If
        Application.ScreenUpdating = True
    End If
End Sub

Leider habe ich nicht die Möglichkeit zu sagen: Von Datum X bis Datum Y.

Ich hoffe ihr versteht was ich meine.
Falls es relevant ist: es gibt in der Tabelle nicht für jeden Tag des Jahres Messwerte.


Danke schonmal für eure Hilfe
 
So müsste es klappen: (Alle Zeilen von Datum1: X6 bis Datum2: Y6)

Code:
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim loZeile As Long
    If Target.Address = "$X$6" Or Target.Address = "$Y$6" Then
    Application.ScreenUpdating = False
    ActiveSheet.UsedRange.Rows.Hidden = False
    If Target <> "" Then
    For loZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 7 Step -1
        Cells(loZeile, 1).EntireRow.Hidden = 1
        If Cells(loZeile, 1).Value >= Cells(6, "X").Value And Cells(loZeile, 1).Value <= Cells(6, "Y").Value Then
            Cells(loZeile, 1).EntireRow.Hidden = 0
        End If
    Next loZeile
    End If
    Application.ScreenUpdating = True
    End If
    End Sub

(Vorraussetzung: Das Datum steht immer in der ersten Spalte)
 
danke für Hilfe,

habe bereits andersweitig Hilfe erhalten:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rngC As Range, rngH As Range
  If Not Intersect(Target, Range("X6:Y6")) Is Nothing Then
    Rows.Hidden = False
    If WorksheetFunction.Count(Range("X6:Y6")) = 2 Then
      For Each rngC In Range(Cells(7, 1), Cells(Rows.Count, 1).End(xlUp))
        Select Case rngC
          Case Range("X6") To Range("Y6")
          Case Else
            If rngH Is Nothing Then
              Set rngH = rngC
            Else
              Set rngH = Union(rngH, rngC)
            End If
        End Select
      Next
    End If
  End If
  If Not rngH Is Nothing Then rngH.EntireRow.Hidden = True
End Sub
 
Zurück
Oben