Microsoft Excel

Herbers Excel/VBA-Archiv

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

Seiten ein- bzw ausblenden

Betrifft: Seiten ein- bzw ausblenden von: Jochen Bode
Geschrieben am: 30.10.2014 13:30:06

Hallo Excel Freunde,
in meiner Tabelle, siehe Anlage, blende ich mit einem Drehfeld Seiten ein- bzw. aus. Besteht die Möglichkeit mein Makro so umzuschreiben das es erkennt in welcher Zelle (hier E58, es ist immer die Spalte “E“) der letzte Eintrag ist und dann entsprechend die Seitenzahl anpasst. Es sollten aber immer ganze Seiten zu sehen sein. Auf der letzten Seite sind immer Unterschriftenfelder.
Ich hoffe ich konnte mein Problem einigermaßen erklären.

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

Danke schon einmal.
Gruß
Jochen

  

Betrifft: AW: Seiten ein- bzw ausblenden von: fcs
Geschrieben am: 30.10.2014 15:53:52

Hallo Jochen,

probiere mal folgendes.

Soweit freie Zeilen vorhanden sind wird der Unterschriftenbereich unten auf der letzten Seite angezeigt,

Gruß
Franz

' Eingabe Zeilen für Maste ausblenden
Private Sub SpinButton1_SpinUp()
  Call SeiteAusblenden
End Sub

' Eingabe Zeilen für Maste einblenden
Private Sub SpinButton1_SpinDown()
  Call SeiteEinblenden
End Sub


Sub SeiteEinblenden()
  'Blendet nach der letzten benutzten Zeile in Spalte E eine leere Seite ein
  Dim Zeile_E As Long, Seite As Long
  Dim Zeile1 As Long, Zeile2 As Long, Zeile3 As Long
  Zeile1 = 22
  Zeile3 = 1127
  'ActiveSheet.Unprotect
  Application.ScreenUpdating = False
  Rows.Hidden = False
  Zeile_E = IIf(Cells(Zeile3, 5) <> "", Zeile3, Cells(Zeile3 + 1, 5).End(xlUp).Row)
  If Zeile_E > Zeile3 - 28 Then
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0)
    'do nothing (alle eingeblendet)
  ElseIf Zeile_E < 46 Then
    Seite = 2
    Zeile2 = 46 + (Seite - 1) * 31 - IIf(Zeile_E >= 46 - 3, 0, 3)
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  Else
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0) + 1
    Zeile2 = 46 + (Seite - 1) * 31 - IIf(Zeile_E >= 46 + (Seite - 1) * 31 - 3, 0, 3)
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  End If
  Range("J7") = Seite
  Application.ScreenUpdating = True
  'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Sub SeiteAusblenden()
  'Blendet nach der letzten benutzten Zeile in Spalte E alle leeren Seite aus
  Dim Zeile_E As Long, Seite As Long
  Dim Zeile1 As Long, Zeile2 As Long, Zeile3 As Long
  Zeile1 = 22
  Zeile3 = 1127
  'ActiveSheet.Unprotect
  Application.ScreenUpdating = False
  Rows.Hidden = False
  Zeile_E = IIf(Cells(Zeile3, 5) <> "", Zeile3, Cells(Zeile3 + 1, 5).End(xlUp).Row)
  If Zeile_E > Zeile3 - 28 Then
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0)
    'do nothing (alle eingeblendet)
  ElseIf Zeile_E < 46 Then
    Seite = 1
    Zeile2 = 46 - IIf(Zeile_E >= 46 - 3, 0, 3)
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  Else
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0)
    Zeile2 = 46 + (Seite - 1) * 31 - IIf(Zeile_E >= 46 + (Seite - 1) * 31 - 3, 0, 3)
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  End If
  Range("J7") = Seite
  Application.ScreenUpdating = True
  'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub



  

Betrifft: AW: Seiten ein- bzw ausblenden von: Jochen Bode
Geschrieben am: 30.10.2014 16:43:33

Hllo Franz, das ist soweit schon sehr gut aber:
Es muß noch berücksichtigt werden das wenn die letzten 3 Zeilen beschrieben werden sollte noch eine ganze Seite hinzugegeben werden , ist nur für Auge.
Ich hoffe es ist verständlich beschrieben.
Danke
Jochen


  

Betrifft: AW: Seiten ein- bzw ausblenden von: fcs
Geschrieben am: 31.10.2014 08:34:14

Hallo Jochen,

mit den folgenden Anpassungen sollte der Unterschriftenbereich auch auf der letzten ggf. leeren Seite unten sein.

Gruß
Franz

' Eingabe Zeilen für Maste ausblenden
Private Sub SpinButton1_SpinUp()
  Call SeiteAusblenden
End Sub

' Eingabe Zeilen für Maste einblenden
Private Sub SpinButton1_SpinDown()
  Call SeiteEinblenden
End Sub


Sub SeiteEinblenden()
  'Blendet nach der letzten benutzten Zeile in Spalte E eine leere Seite ein
  Dim Zeile_E As Long, Seite As Long
  Dim Zeile1 As Long, Zeile2 As Long, Zeile3 As Long
  Zeile1 = 22
  Zeile3 = 1127
  'ActiveSheet.Unprotect
  Application.ScreenUpdating = False
  Rows.Hidden = False
  Zeile_E = IIf(Cells(Zeile3, 5) <> "", Zeile3, Cells(Zeile3 + 1, 5).End(xlUp).Row)
  If Zeile_E > Zeile3 - 28 Then
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0)
    'do nothing (alle eingeblendet)
  ElseIf Zeile_E < 46 Then
    Seite = 2
    Zeile2 = 46 + (Seite - 1) * 31
    If Zeile_E >= 46 - 3 Then
       Zeile2 = Zeile2 + 28
       Seite = Seite + 1
    Else
       Zeile2 = Zeile2 - 3
    End If
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  Else
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0) + 1
    Zeile2 = 46 + (Seite - 1) * 31
    If Zeile_E >= 46 + (Seite - 1) * 31 - 3 Then
       Zeile2 = Zeile2 + 28
       Seite = Seite + 1
    Else
       Zeile2 = Zeile2 - 3
    End If
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  End If
  Range("J7") = Seite
  Application.ScreenUpdating = True
  'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Sub SeiteAusblenden()
  'Blendet nach der letzten benutzten Zeile in Spalte E alle leeren Seite aus
  Dim Zeile_E As Long, Seite As Long
  Dim Zeile1 As Long, Zeile2 As Long, Zeile3 As Long
  Zeile1 = 22
  Zeile3 = 1127
  'ActiveSheet.Unprotect
  Application.ScreenUpdating = False
  Rows.Hidden = False
  Zeile_E = IIf(Cells(Zeile3, 5) <> "", Zeile3, Cells(Zeile3 + 1, 5).End(xlUp).Row)
  If Zeile_E > Zeile3 - 28 Then
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0)
    'do nothing (alle eingeblendet)
  ElseIf Zeile_E < 46 Then
    Seite = 1
    Zeile2 = 46
    If Zeile_E >= 46 - 3 Then
       Zeile2 = Zeile2 + 28
       Seite = Seite + 1
    Else
       Zeile2 = Zeile2 - 3
    End If
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  Else
    Seite = 1 + Application.WorksheetFunction.RoundUp((Zeile_E - 45) / 31, 0)
    Zeile2 = 46 + (Seite - 1) * 31 - IIf(Zeile_E >= 46 + (Seite - 1) * 31 - 3, -28, 3)
    If Zeile_E >= 46 + (Seite - 1) * 31 - 3 Then
       Zeile2 = Zeile2 + 28
       Seite = Seite + 1
    Else
       Zeile2 = Zeile2 - 3
    End If
    Range(Rows(Zeile2), Rows(Zeile3)).EntireRow.Hidden = True
  End If
  Range("J7") = Seite
  Application.ScreenUpdating = True
  'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub



  

Betrifft: AW: Seiten ein- bzw ausblenden von: Jochen Bode
Geschrieben am: 31.10.2014 09:08:26

Guten Morgen Franz, danke für Deine Mühen. Habe das Makro ausgetauscht, jetzt werden 28 Zeilen zuwenig ausgeblendet.

Gruß
Jochen


  

Betrifft: AW: Seiten ein- bzw ausblenden von: fcs
Geschrieben am: 31.10.2014 11:39:01

Hallo Jochen,

ersetze in Sub SeiteAusblenden
die Zeile

    Zeile2 = 46 + (Seite - 1) * 31 - IIf(Zeile_E >= 46 + (Seite - 1) * 31 - 3, -28, 3)
durch
    Zeile2 = 46 + (Seite - 1) * 31

Gruß
Franz


  

Betrifft: AW: Seiten ein- bzw ausblenden von: Jochen Bode
Geschrieben am: 31.10.2014 14:10:02

Hallo Franz, Klappt hervorragen!!!
Danke noch einmal und ein schönes Wochenende.
Gruß
Jochen


 

Beiträge aus den Excel-Beispielen zum Thema "Seiten ein- bzw ausblenden"