Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
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
Inhaltsverzeichnis

Zeilen ausblenden

Zeilen ausblenden
05.11.2008 14:47:25
Frank
Hallo Leute,
da mir gestern Eurer seits sehr unter die Arme geholfen wurde werde ich etwas mutiger und komme nun zu meinem nächsten "Problemchen".
Rudi hat mir gestern gezeigt wie ich den Zugriff auf eine Datei mittels NT-Kennung steuere.
Die einen dürfen nun alles der Rest nur bedingt.
Ich habe ein dabellenblatt was als Kalender fungiert. 12 Buttons für jeden Monat welche beim Betätigen in die besagte Monatszeile springt. Zum anderen wird am anfang gleich geschaut welches Datum haben wir momentan und springt dort schon mal automatisch hin. Klappt alles wunderbar. Nun soll aber gewährleistet sein, wer also keine schreib_lese Berechtigung hat darf nicht zurück scrollen - nur noch vorwärts.
Der Code der nachfolgend kommt wurde ebenfalls hier im Forum zusammen gebaut. Dort wird allerdings gehandelt dass sobald die Datei schreibgeschützt aufgeht der jenige nicht mehr rückwärtsscrollen kann. Das betrifft natürlich jetzt auch die Leute die die Berechtigung über das auslesen der NT-Kennung haben. Man müßte nun die Abfrage so umbauen wer NT-Kennungsberechtigt ist darf alles auch wenn er nur als schreibgeschützt die mappe öffnen konnte und all die anderen wie gehabt.
Könnt ihr bitte mal drüber schauen und mir einen Tip geben wie ich es anstellen kann mein Problem zu lösen.
Danke Frank

Private Sub Worksheet_activate()
Dim m As Integer, Zeile As Long
m = Month(Date)
Select Case m
Case 1
Zeile = 3
Case 2
Zeile = 67
Case 3
Zeile = 131
Case 4
Zeile = 195
Case 5
Zeile = 259
Case 6
Zeile = 323
Case 7
Zeile = 387
Case 8
Zeile = 451
Case 9
Zeile = 515
Case 10
Zeile = 579
Case 11
Zeile = 643
Case 12
Zeile = 707
End Select
Call ScrollenEinstellen(m, Zeile)
End Sub



Private Sub CommandButton_Apr_Click()
Call ScrollenEinstellen(10, 195)
End Sub



Private Sub CommandButton_Aug_Click()
Call ScrollenEinstellen(10, 451)
End Sub



Private Sub CommandButton_Feb_Click()
Call ScrollenEinstellen(10, 67)
End Sub



Private Sub CommandButton_Jan_Click()
Call ScrollenEinstellen(10, 3)
End Sub



Private Sub CommandButton_Jul_Click()
Call ScrollenEinstellen(10, 387)
End Sub



Private Sub CommandButton_Jun_Click()
Call ScrollenEinstellen(10, 323)
End Sub



Private Sub CommandButton_Mai_Click()
Call ScrollenEinstellen(10, 259)
End Sub



Private Sub CommandButton_Mar_Click()
Call ScrollenEinstellen(10, 131)
End Sub



Private Sub CommandButton_Sep_Click()
Call ScrollenEinstellen(10, 515)
End Sub



Private Sub CommandButton_Okt_Click()
Call ScrollenEinstellen(10, 579)
End Sub



Private Sub CommandButton_Nov_Click()
Call ScrollenEinstellen(11, 643)
End Sub



Private Sub CommandButton_Dez_Click()
Call ScrollenEinstellen(12, 707)
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 1
ZeileMonat = 3
Case 2
ZeileMonat = 67
Case 3
ZeileMonat = 131
Case 4
ZeileMonat = 195
Case 5
ZeileMonat = 259
Case 6
ZeileMonat = 323
Case 7
ZeileMonat = 387
Case 8
ZeileMonat = 451
Case 9
ZeileMonat = 515
Case 10
ZeileMonat = 579
Case 11
ZeileMonat = 643
Case 12
ZeileMonat = 707
End Select
Application.ScreenUpdating = False
If ThisWorkbook.ReadOnly = True Then ' Aktionen wenn Datei schreibgeschützt geöffnet wurde
If Monat 


1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ausblenden
05.11.2008 21:24:52
Daniel
Hi
also ich hab jetzt gar nicht erst versucht zu verstehen was du willst, aber ich kann dir trotzdem folgende tipps geben:
1. Zeilen-Nr berechnen
deine Monatszeilen haben immer den gleichen Abstand (64)
daher kannst du die Zeilen für jeden Monat einfach berechnen und dein kompletter Select-Case-Block entfällt.

m = Month(Date)
ZeileMonat = (m-1)*64+3


2. Formular-Buttons verwenden
du hast in deiner Datei 12 Steuerelement-Buttons, das ist sehr aufwendig, weil du für jeden einen eigenen Code schreiben musst. Wesentlich einfacher ist folgendes:
- verwende anstelle der Steuerelement-Buttons die Buttons aus der Leiste Formularfelder
- gib den Buttons einen passenen Namen (z.B. "Monat_01", "Monat_02", ..., "Monat_12")
den Namen vergibst du im eingabefeld oben links, da wo normalerweise die Addresse der aktiven Zelle steht.
- verschiebe das Makro "ScrollenEinstellen" ins allgemeine Modul
- Schreibe im allgemeinen Modul ein neues Makro, daß aus dem angeklickten Button den Monat ermittelt und dann "ScrollenEinstellen" aufruft
- weise dieses Makro jedem Formularbutton als Makro zu
- die Variable "Monat" kannst du jetzt aus dem Buttonnamen ermittlen:


Monat = CInt(right(Application.Caller,2))


- die Variable "Zeile" kannst du dann wie schon beschrieben rechnen
damit sparst du dir viel Schreibarbeit, weil du nur noch 1 Makro benötigst und nicht 12.
der Code müsste dann in etwa so aussehen
im Modul des Tabellenblatts:


Private Sub Worksheet_activate()
Call ScrollenEinstellen(Month(Date))
End Sub


im allgemeinen Modul


Sub Button_Monat_scrollen() 'dieses Makro allen Buttons zuweisen
call ScrollenEinstellen(CInt(right(application.caller,2)))
end sub



Private Sub ScrollenEinstellen(Monat As Integer)
Dim ZeileMonat As Long
dim Zeile as long
Dim Zeile1 as long
Zeile = (Monat-1)*64+3
ZeileMonat = (Month(date)-1)*64+3
Application.ScreenUpdating = False
If ThisWorkbook.ReadOnly = True Then ' Aktionen wenn Datei schreibgeschützt geöffnet wurde
If Monat 


Gruß, Daniel
ich lass die Frage mal offen, weil ich deine Frage ja nicht beantwortet habe.

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige