Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1548to1552
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
Zeilen und Tabellenblätter per VBA ausblenden
04.04.2017 07:25:43
Gecko
Moin, mein Problem:
ich habe auf dem ersten Reiter ein Feld (I5) mit Auswahl der Monate Januar bis Dezember und ein Button, der das Makro ausführt.
Nach dem Ausführen soll nun auf den Reitern 5 bis Ende geschaut werden, ob in den Zellen (T11:T375) mit einem X belegt sind (sind die Tage im ausgewählten Monat), diese sollen dann eingeblendet bleieben, der Rest soll ausgeblendet werden. Danach wird in "U2" geschaut, ob das Blatt ausgewählt werden soll, die anderen Reiter werden ausgeblendet. Beide Schritte werden in einem "Druckenmakro" einbetettet.
Hier einmal den Teil des Makro mit dem die Reiter ausgewählt werden:
For i = 5 To Sheets.Count
If Sheets(i).Range("U2") = "NEIN" Then
sichtbar = False
Else
sichtbar = True
zuDrucken = zuDrucken & Sheets(i).Name & "?"
End If
If sichtbar  Sheets(i).Visible Then Sheets(i).Visible = sichtbar
Next
Meine Idee war es in diesen Bereich die Abfrage mit If Sheets(i)... ="X" Then Sheets(i).EntireRow.Hidden = False. Leider habe ich bisher nur Fehlermeldungen bei meinen Versuchen mit Range usw. bekommen, daher hoffe ich auf eure Hilfe.
Da das Makro immer wieder angewendet wird, muss natürlich zuerst alles eingeblendet werden, danach das ausblenden, der nicht benötigten Zeilen.
In A11:A375 stehen die Daten 01.01.2017 bis 31.12.2017 und in T11:T375 wird mit "X" ausgegeben, ob der Tag in den Monat fällt, der auf dem ersten Reiter ausgewählt wurde.
Hier das komplette Makro, falls jemand die Gesamtübersicht haben will, aber nur der wichtige Teil, ohne FEHLER:
Sub Drucken()
Dim i As Long
Dim sichtbar As Boolean
Dim zuDrucken As String
Dim arrDrucken As Variant
Dim p1 As String
Dim p2 As String
Dim p3 As String
Dim p4 As String
Dim zeile As Long
Dim wks As Worksheet
Application.ScreenUpdating = False
p2 = Sheets(1).Cells(50, 2)
p3 = Sheets(1).Cells(50, 3)
p4 = Sheets(1).Cells(50, 4)
p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
If p1 = "" Then
MsgBox "Kein Passwort eingegeben!" & vbLf & vbLf & "Blattschutz wird nicht nicht  _
aufgehoben!"
Exit Sub
End If
On Error GoTo FEHLER
If p1 = Sheets(1).Cells(48, 2) Or p1 = Sheets(1).Cells(48, 3) Or p1 = Sheets(1).Cells(48, 4)  _
Then
For i = 5 To Sheets.Count
If Sheets(i).Range("U2") = "NEIN" Then
sichtbar = False
Else
sichtbar = True
zuDrucken = zuDrucken & Sheets(i).Name & "?"
End If
If sichtbar  Sheets(i).Visible Then Sheets(i).Visible = sichtbar
Next
zuDrucken = Left(zuDrucken, Len(zuDrucken) - 1) ' letztes "?" weg
arrDrucken = Split(zuDrucken, "?")              ' in ein "Array" überführen
If UBound(arrDrucken) 
Danke für eure Hilfe
Gecko

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen und Tabellenblätter per VBA ausblenden
04.04.2017 07:43:39
Gecko
Hi,
scheinbar bin ich selbst einen Schritt voran gekommen, umständlich aber vielleicht funktioniert es:
For i = 5 To Sheets.Count
If Sheets(1).Cells(5, 9) = "Januar" Then
Sheets(i).Rows("11:41").EntireRow.Hidden = False
Sheets(i).Rows("42:375").EntireRow.Hidden = True
Else
If Sheets(1).Cells(5, 9) = "Februar" Then
Sheets(i).Rows("11:41").EntireRow.Hidden = True
Sheets(i).Rows("42:69").EntireRow.Hidden = False
Sheets(i).Rows("70:375").EntireRow.Hidden = True
Schauen wir mal
AW: Zeilen und Tabellenblätter per VBA ausblenden
04.04.2017 09:55:36
Gecko
erledigt, war gestern wohl echt zu spät und der Kopf nicht mehr auf 100% ... hat jetzt funktioniert, auch wenn es etwas mehr Text geworden ist:
Sub Drucken()
Dim i As Long
Dim sichtbar As Boolean
Dim zuDrucken As String
Dim arrDrucken As Variant
Dim p1 As String
Dim p2 As String
Dim p3 As String
Dim p4 As String
Dim zeile As Long
Dim wks As Worksheet
Application.ScreenUpdating = False
p2 = Sheets(1).Cells(50, 2)
p3 = Sheets(1).Cells(50, 3)
p4 = Sheets(1).Cells(50, 4)
p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
If p1 = "" Then
MsgBox "Kein Passwort eingegeben!" & vbLf & vbLf & "Blattschutz wird nicht nicht  _
aufgehoben!"
Exit Sub
End If
On Error GoTo FEHLER
If p1 = Sheets(1).Cells(48, 2) Or p1 = Sheets(1).Cells(48, 3) Or p1 = Sheets(1).Cells(48, 4)  _
Then
With Sheets(3)
.Unprotect Password:=p2
.Range("A65536").End(xlUp).Offset(1, 0) = Now ' Datum inkl. Zeit
.Range("B65536").End(xlUp).Offset(1, 0) = Environ("Username") 'Kennung mit der die Person  _
eingeloggt ist
.Range("C65536").End(xlUp).Offset(1, 0) = "JA" 'Protokollabfrage-Zugriff wird protokolliert
.Range("D65536").End(xlUp).Offset(1, 0) = "KORDINATORENZUGRIFF" 'Protokollabfrage-Zugriff  _
wird protokolliert
For zeile = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 ' Von letzter Zeile bis Zeile 2
If IsDate(.Cells(zeile, 1).Value) Then  ' Schaut nach, ob es ein Datum ist, sonst kann es bei  _
der nächsten Abfrage einen Fehler geben
If .Cells(zeile, 1).Value + 365  Sheets(i).Visible Then Sheets(i).Visible = sichtbar
Next
zuDrucken = Left(zuDrucken, Len(zuDrucken) - 1) ' letztes "?" weg
arrDrucken = Split(zuDrucken, "?")              ' in ein "Array" überführen
If UBound(arrDrucken) 

Anzeige
AW: Zeilen und Tabellenblätter per VBA ausblenden
04.04.2017 10:42:15
Daniel
Hi
kleiner Tip:
schau dir mal die ElseIf - Option des IF-Blocks an
oder besser noch die Entscheidungsfunktion Select Case.
damit lässt sich dein Vorhaben etwas übersichtlicher und ohne immer größer werdende Einrückung darstellen:
For i = 5 To Sheets.Count
If Sheets(1).Cells(5, 9) = "Januar" Then
Sheets(i).Rows("11:41").EntireRow.Hidden = False
Sheets(i).Rows("42:375").EntireRow.Hidden = True
ElseIf Sheets(1).Cells(5, 9) = "Februar" Then
Sheets(i).Rows("11:41").EntireRow.Hidden = True
Sheets(i).Rows("42:69").EntireRow.Hidden = False
Sheets(i).Rows("70:375").EntireRow.Hidden = True
ElseIf Sheets(1).Cells(5, 9) = "März" Then
Sheets(i).Rows("11:69").EntireRow.Hidden = True
Sheets(i).Rows("70:100").EntireRow.Hidden = False
Sheets(i).Rows("101:375").EntireRow.Hidden = True
ElseIf ....
End If
Next

bzw
For i = 5 To Sheets.Count
Select Case Sheets(1).Cells(5, 9).Value
Case "Januar"
Sheets(i).Rows("11:41").EntireRow.Hidden = False
Sheets(i).Rows("42:375").EntireRow.Hidden = True
Case "Februar"
Sheets(i).Rows("11:41").EntireRow.Hidden = True
Sheets(i).Rows("42:69").EntireRow.Hidden = False
Sheets(i).Rows("70:375").EntireRow.Hidden = True
Case "März"
Sheets(i).Rows("11:69").EntireRow.Hidden = True
Sheets(i).Rows("70:100").EntireRow.Hidden = False
Sheets(i).Rows("101:375").EntireRow.Hidden = True
Case "April"
Case Else
End Select
Next
End If
Next
Gruß Daniel
Anzeige
AW: Zeilen und Tabellenblätter per VBA ausblenden
04.04.2017 10:43:11
Daniel
Hi
kleiner Tip:
schau dir mal die ElseIf - Option des IF-Blocks an
oder besser noch die Entscheidungsfunktion Select Case.
damit lässt sich dein Vorhaben etwas übersichtlicher und ohne immer größer werdende Einrückung darstellen:
For i = 5 To Sheets.Count
If Sheets(1).Cells(5, 9) = "Januar" Then
Sheets(i).Rows("11:41").EntireRow.Hidden = False
Sheets(i).Rows("42:375").EntireRow.Hidden = True
ElseIf Sheets(1).Cells(5, 9) = "Februar" Then
Sheets(i).Rows("11:41").EntireRow.Hidden = True
Sheets(i).Rows("42:69").EntireRow.Hidden = False
Sheets(i).Rows("70:375").EntireRow.Hidden = True
ElseIf Sheets(1).Cells(5, 9) = "März" Then
Sheets(i).Rows("11:69").EntireRow.Hidden = True
Sheets(i).Rows("70:100").EntireRow.Hidden = False
Sheets(i).Rows("101:375").EntireRow.Hidden = True
ElseIf ....
End If
Next

bzw
For i = 5 To Sheets.Count
Select Case Sheets(1).Cells(5, 9).Value
Case "Januar"
Sheets(i).Rows("11:41").EntireRow.Hidden = False
Sheets(i).Rows("42:375").EntireRow.Hidden = True
Case "Februar"
Sheets(i).Rows("11:41").EntireRow.Hidden = True
Sheets(i).Rows("42:69").EntireRow.Hidden = False
Sheets(i).Rows("70:375").EntireRow.Hidden = True
Case "März"
Sheets(i).Rows("11:69").EntireRow.Hidden = True
Sheets(i).Rows("70:100").EntireRow.Hidden = False
Sheets(i).Rows("101:375").EntireRow.Hidden = True
Case "April"
Case Else
End Select
Next
End If
Next
Gruß Daniel
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige