Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

active sheet Zeilen ausblenden

active sheet Zeilen ausblenden
05.12.2006 07:48:59
Frank
Hallo und Guten Morgen,
ich brauche wiedermal Eure Hilfe.
Ich öffne eine datei es wird geschaut welchen Monat wir haben und betreffende Zeile ist die erste unter meiner Fixierung. Habe hier nur die letzten drei Monate mitgeliefert da die restlichen ja identisch sind.
Habe nun zwei Probleme die ich lösen möchte. Zum einen es darf nur runtergescrollt werden und nicht nach oben. Das heißt wenn wir Nov haben und mein makro springt zur Zeile 367 darf ich nicht zu den zeilen unterhalb gelangen dagegen in die andere richtung bis ende.
Zum anderen:
Habe diesbezüglich auch für jeden Monat einen Button angelegt. Ich müßte eine Abfrage starten wenn Button kleiner dem aktuellen Monat dann keine Aktion sondern msgbox Monat liegt in der Vergangenheit. Dagegen Monatsauswahl größer aktueller Monat dann Aktion zur betreffenden zeile springen.
Ich müßte irgendwie die Zeile welche beim aufruf der Datei als erstes angesprochen wird als Bezugspunkt für die nachfolgenden Abfragen festlegen - nur wie?
Hoffe ich habe mich nicht allzukompliziert ausgedrückt.
Gruß Frank

Private Sub Worksheet_activate()
m = Month(Date)
Select Case m
Case 1
Zeile = 303
End Select
Select Case m
Case 2
Zeile = 367
End Select
Select Case m
Case 3
Zeile = 431
End Select
End Sub

Private Sub CommandButton_Okt_Click()
Zeile = 303
ActiveWindow.ScrollRow = Zeile
End Sub

Private Sub CommandButton_Nov_Click()
Zeile = 367
ActiveWindow.ScrollRow = Zeile
End Sub

Private Sub CommandButton_Dez_Click()
Zeile = 431
ActiveWindow.ScrollRow = Zeile
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: active sheet Zeilen ausblenden
05.12.2006 10:01:32
Yal
Hi,
Warum willst Du die Auswahl des Monates den User belassen?
Es reicht vielleicht, wenn der aktuelle Monat per Makro ermittelt wird

Private Sub cmdMonat_Click()
Zeile = Array(0, 303, 367, 431)
ActiveWindow.ScrollRow = Zeile(Month(Date))
End Sub

im übrigens, dein Select case sollte so aussehen (wird aber nicht mehr benötigt):

Private Sub Worksheet_activate()
m = Month(Date)
Select Case m
Case 1: Zeile = 303
Case 2: Zeile = 367
Case 3: Zeile = 431
End Select
End Sub

Die Doppelpunkt (nach dem "Case x") erlauben mehrere VB-Instruktionen auf einer Zeile.
Man gewinnt aber nur bedingt an Lesbarkeit.
z.B.:

Mon = Array("", "Jan","Feb","Mrz"): For i = 1 to 3: msg = msg & Mon(i) & "; ": next i: MsgBox msg

Anzeige
AW: active sheet Zeilen ausblenden
05.12.2006 13:55:57
Frank
Hallo Yal,
vorrausschauend sollte der User schon - sich mit dem vergangenen zu beschäftigen eher nicht.
Danke für Deinen Vorschlag - kann ich bei meiner nächsten Arbeit sehr gut gebrauchen.
Gruß Frank
AW: active sheet Zeilen ausblenden
05.12.2006 10:52:37
fcs
Hallo Frank,
ich würde die Zeilen, die mit Scrollen nicht mehr einsehbar sein sollen, einfach ausblenden. Deine Makros kann man dann etwa wie folgt aufbauen, wobei ich eine kleine Unterroutine eingefügt habe, die von den Button-Makros die jeweiligen Informationen bekommt.
Gruß
Franz

Private Sub Worksheet_activate()
Dim m As Integer, Zeile As Long
m = Month(Date)
Select Case m
Case 10
Zeile = 303
Case 11
Zeile = 367
Case 12
Zeile = 431
End Select
Call ScrollenEinstellen(m, Zeile)
End Sub
Private Sub CommandButton_Okt_Click()
Call ScrollenEinstellen(10, 303)
End Sub
Private Sub CommandButton_Nov_Click()
Call ScrollenEinstellen(11, 367)
End Sub
Private Sub CommandButton_Dez_Click()
Call ScrollenEinstellen(12, 431)
End Sub
Private Sub ScrollenEinstellen(Monat As Integer, Zeile As Long)
Dim ZeileMonat As Long
'Monat = Nummer des Monats dessen Button geklickt wurde
'Zeile = 1. Zeile für den Monat, dessen oberste Zeile angezeigt werden soll
Zeile1 = 5 'Nummer der Zeile unterhalb der Fixierten Zeilen
'Zeilennummer des aktuellen Monats festlegen
Select Case Month(Date)
Case 10
ZeileMonat = 303
Case 11
ZeileMonat = 367
Case 12
ZeileMonat = 431
End Select
If Monat < Month(Date) Then
Exit Sub ' Monat aus Vergangenheit wurde gewählt
Else
'Zeilen, die eingesehen werden sollen ausblenden
Application.ScreenUpdating = False
Me.UsedRange.EntireRow.Hidden = False
Me.Range(Rows(Zeile1), Rows(ZeileMonat - 1)).EntireRow.Hidden = True
'auf gewünschte Zeile scrollen
ActiveWindow.ScrollRow = Zeile
Me.Cells(Zeile, 1).Select
Application.ScreenUpdating = True
End If
End Sub

Anzeige
AW: active sheet Zeilen ausblenden
05.12.2006 15:10:27
Frank
Hallo Franz,
habe Dein Code gerade ausprobiert - funktioniert einwandfrei.
Mal ne andere frage nebenbei.
Kann ich denn ne Abfrage starten indem ich sage wenn jemand die datei schreibgeschützt öffnet (nur Leseberechtigung) dann mache genau das was Du mir konzipiert hast aktueller Monat nur aufwärts und scrollen verhindern. Bin ich aber schreibberechtigt dann überspringe das makro mit dem Scrollen einstellen.
Frank
AW: active sheet Zeilen ausblenden
05.12.2006 16:48:38
fcs
Hallo Frank,
die Makro-Funktion bei schreibgeschütz öffnen zu ändern ist kein Problem. Allerdings sollte dann beim Öffnen der Datei ein weiteres Makro ausgeführt werden, das ggf. die Zeilen im Blatt für die "alten" Monate ausblendet.
Diese Schutzeinstellungen sind natürlich alle sehr leicht zu umgehen, wenn der Blattschutz (inkl. Kennwort) nicht aktiviert wird und die Aktivierung der Makros nicht erzwungen wird.
ggf. muss du an diesen Baustellen auch noch etwas arbeiten.
Gruß
Franz

Modifiziertes Scrollmakro
Sub ScrollenEinstellen(Monat As Integer, Zeile As Long)
Dim ZeileMonat As Long
'Monat = Nummer des Monats dessen Buttons der geklickt wurde
'Zeile = 1. Zeile für den Monat, dessen oberste Zeile angezeigt werden soll
Zeile1 = 5 'Nummer der Zeile unterhalb der Fixierten Zeilen
'Zeilennummer des aktuellen Monats festlegen
Select Case Month(Date)
Case 10
ZeileMonat = 303
Case 11
ZeileMonat = 367
Case 12
ZeileMonat = 431
End Select
Application.ScreenUpdating = False
If ThisWorkbook.ReadOnly = True Then
'Aktionen wenn Datei schreibgeschützt geöffnet wurde
If Monat < Month(Date) Then
Exit Sub ' Monat aus Vergangenheit wurde gewählt
Else
Me.UsedRange.EntireRow.Hidden = False
'Zeilen, die nicht eingesehen werden sollen ausblenden
Me.Range(Rows(Zeile1), Rows(ZeileMonat - 1)).EntireRow.Hidden = True
'auf gewünschte Zeile scrollen
ActiveWindow.ScrollRow = Zeile
Me.Cells(Zeile, 1).Select
End If
Else
'Aktionen wenn schreib/leseberechtigt
Me.UsedRange.EntireRow.Hidden = False
'auf gewünschte Zeile scrollen
ActiveWindow.ScrollRow = Zeile
Me.Cells(Zeile, 1).Select
End If
Application.ScreenUpdating = True
End Sub
Zusätzliches Makro, das unter "DieseArbeitsmappe" eingefügt werden sollte
Private Sub Workbook_Open()
If ThisWorkbook.ReadOnly = True Then
'Aktionen wenn Datei schreibgeschützt geöffnet wurde
Dim Zeile As Long, Zeile1 As Long
Zeile1 = 5  '1. Zeile mit Daten unterhalb der fixierten Zeilen
Select Case Month(Date)
Case 10
Zeile = 303
Case 11
Zeile = 367
Case 12
Zeile = 431
End Select
Application.ScreenUpdating = False
ThisWorkbook.Worksheets("Tabelle1").UsedRange.EntireRow.Hidden = False
'Zeilen, die nicht eingesehen werden sollen ausblenden
ThisWorkbook.Worksheets("Tabelle1").Range(Rows(Zeile1), Rows(Zeile - 1)).EntireRow.Hidden = True
Application.ScreenUpdating = True
End If
End Sub

Anzeige
AW: active sheet Zeilen ausblenden
05.12.2006 20:16:42
Frank
Hallo Franz,
danke für Deine Mühen - habe so einen Wegweiser bekommen wie ich lang laufen muß.
Danke Frank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige