Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zeilen ausblenden nach einem oder mehreren Kreteri | Herbers Excel-Forum


Betrifft: Zeilen ausblenden nach einem oder mehreren Kreteri von: Joachim
Geschrieben am: 21.11.2009 18:17:24

Hallo Excel-Gemeinde

folgender Code funktioniert und er blendet die angewiesenen Zellen aus

Sub Zeilen_ausblenden()
Sheets("EG aktuell").Rows("3:325").Hidden = True
End Sub
Wie muss der Code umgeschrieben werden, wenn z. B alle Zellen ausgeblendet werden sollen, deren Datum in Spalte D kleiner als 01.08.2009 sind. Zeilen 1 + 2 sollen generell stehen bleiben.

Leider reichen meine VBA Kenntnisse nicht, um das selbst zu progrmmieren.

Vielen Dank für eure Hilfe

Gruß Joachim

  

Betrifft: AW: Zeilen ausblenden nach einem oder mehreren Kreteri von: Josef Ehrensberger
Geschrieben am: 21.11.2009 18:33:28

Hallo Joachim,

grundsätzlich geht das so. (eine von vielen Möglichkeiten!)

Sub Zeilen_ausblenden()
  Dim lngRow As Long, lngLast As Long
  Dim rngHide As Range
  
  With Sheets("EG aktuell")
    lngLast = Application.Max(3, .Cells(.Rows.Count, 4).End(xlUp).Row)
    .Rows.Hidden = False
    For lngRow = 3 To lngLast
      If .Cells(lngRow, 4).Value < DateSerial(2008, 8, 1) Then
        If rngHide Is Nothing Then
          Set rngHide = .Rows(lngRow)
        Else
          Set rngHide = Union(rngHide, .Rows(lngRow))
        End If
      End If
    Next
  End With
  
  If Not rngHide Is Nothing Then rngHide.EntireRow.Hidden = True
  
  Set rngHide = Nothing
End Sub




Gruß Sepp



  

Betrifft: AW: Zeilen ausblenden nach einem oder mehreren Kreteri von: Joachim
Geschrieben am: 21.11.2009 18:44:28

Danke Josef!!!

Das funktioniert wunderbar, vielen Dank.

Ich will nicht unverschämt sein, aber eine Sache wäre mir noch sehr wichtig, ich glaube aber, dass das nur über eine sog. INputbox geht, die ich noch nie selbst eingerichtet habe.

Zeilen aus den Spalten z.B. A - D den Wert "Auswertung" enthalten, sollen stehen bleiben, alle anderen sollen ausgeblendet werden. Der Suchwert soll halt beliebig sein.


Wenn es keine Mühe macht, wäre ich sehr dank, was ich jetzt auch schon bin.

Toll!

Danke Joachim


  

Betrifft: AW: Zeilen ausblenden nach einem oder mehreren Kreteri von: Josef Ehrensberger
Geschrieben am: 21.11.2009 19:00:04

Hallo Joachim,

ist sicher noch Ausbaubar.

Sub Zeilen_ausblenden()
  Dim lngRow As Long, lngLast As Long
  Dim lngDate As Long, strFind As String
  Dim rngHide As Range
  
  lngDate = Application.InputBox("Geben Sie das Datum ein", "Datum", CStr(Date), Type:=1)
  
  If lngDate = 0 Or Not IsDate(CDate(lngDate)) Then
    MsgBox "Abbruch!" & vbLf & "Ungültiges Datum!", vbExclamation, "Fehler"
    Exit Sub
  End If
  
  strFind = InputBox("Geben Sie den Suchbegriff ein", "Suchbegriff", "Auswertung")
  
  If strFind = "" Then
    MsgBox "Abbruch!" & vbLf & "Ungültiger Suchbegriff", vbExclamation, "Fehler"
    Exit Sub
  End If
  
  With Sheets("EG aktuell")
    lngLast = Application.Max(3, .Cells(.Rows.Count, 4).End(xlUp).Row)
    .Rows.Hidden = False
    For lngRow = 3 To lngLast
      If .Cells(lngRow, 4).Value < lngDate Then
        If Application.CountIf(.Range(.Cells(lngRow, 1), .Cells(lngRow, 4)), strFind) = 0 Then
          If rngHide Is Nothing Then
            Set rngHide = .Rows(lngRow)
          Else
            Set rngHide = Union(rngHide, .Rows(lngRow))
          End If
        End If
      End If
    Next
  End With
  
  If Not rngHide Is Nothing Then rngHide.EntireRow.Hidden = True
  
  Set rngHide = Nothing
End Sub




Gruß Sepp



  

Betrifft: AW: Zeilen ausblenden nach einem oder mehreren Kreteri von: Joachim
Geschrieben am: 21.11.2009 19:13:25

Hallo nochmal,

sicher mag der Code noch ausbaubar sein, aber bestimmt nicht durch mich, dafür reicht es bei weitem nicht.

Der Code funktioiert mit der Datumseingabe,

aber was, wenn ich kein Datum eingebe, also individuell suchen will und alles was den Suchbegriff enthält eingeblendet bleiben soll und der Rest ausgeblendet wird.
Das meinte ich mit beliebig. Kannst du dass noch enpflegen, dann habe ich mich auch wirklich genug deiner Dienste bemüht.

Trotzdem ziehe ich meinen Hut, für das erzielte Ergebnis.

Gruß Joachim


  

Betrifft: AW: Zeilen ausblenden nach einem oder mehreren Kreteri von: Josef Ehrensberger
Geschrieben am: 21.11.2009 19:45:43

Hallo Joachim,

na dann so.

Sub Zeilen_ausblenden()
  Dim lngRow As Long, lngLast As Long
  Dim strFind As String, lngDate As Long, strS As String
  Dim rngHide As Range
  
  strFind = InputBox("Geben Sie den Suchbegriff oder ein Datum ein", "Suchbegriff", "Auswertung")
  
  If strFind = "" Then
    MsgBox "Abbruch!" & vbLf & "Ungültiger Suchbegriff", vbExclamation, "Fehler"
    Exit Sub
  End If
  
  If IsDate(strFind) Then
    lngDate = CDate(strFind)
    strS = ""
  Else
    lngDate = 99999
    strS = strFind
  End If
  
  With Sheets("EG aktuell")
    lngLast = Application.Max(3, .Cells(.Rows.Count, 4).End(xlUp).Row)
    .Range(.Cells(3, 1), .Cells(lngLast, 1)).EntireRow.Hidden = False
    For lngRow = 3 To lngLast
      If .Cells(lngRow, 4).Value < lngDate Or Not IsDate(.Cells(lngRow, 4).Value) Then
        If Application.CountIf(.Range(.Cells(lngRow, 1), .Cells(lngRow, 4)), strFind) = 0 Then
          If rngHide Is Nothing Then
            Set rngHide = .Rows(lngRow)
          Else
            Set rngHide = Union(rngHide, .Rows(lngRow))
          End If
        End If
      End If
    Next
  End With
  
  If Not rngHide Is Nothing Then rngHide.EntireRow.Hidden = True
  
  Set rngHide = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Danke!!!! von: Joachim
Geschrieben am: 21.11.2009 20:03:43

Das ist super!

Vielen, vielen Dank

Joachim


Beiträge aus den Excel-Beispielen zum Thema "Zeilen ausblenden nach einem oder mehreren Kreteri"