Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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

Schleife über die Tabellenblätter mit den Monatsnamen

Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 17:33:42
STeve
Hallo liebe Helferlein.

Stehe auf dem Schlauch.

Habe eine Tabelle die hat für jedes Monat ein Tabellenblatt - also Januar - Februar - März- April - Mai usw.

Möchte jetzt eine Schleife über die Blätter laufen lassen und wenn z.b. das akt. Datum nach dem 17. des aktuellen Monats ist - also wir haben z.b. den 18 Februar dann soll es das n ä c h s t f o l g e n d e Monatsblatt also das Blatt mit dem Namen MÄRZ komplett sperren (mit dem Passwort)

Die Blätter Januar - Februar - April - Mai usw. soll es ignorieren.

Bitte um eure Adaption des ua Codes.

Danke


Sub SchutzUndSperren()

Dim aktuellesDatum As Date
Dim aktuellerMonat As Integer
Dim Durchlaufe_die_Monatsblaetter As Integer
Dim blattName As String
Dim passwort As String


' Setze das Passwort zum Schutz der Blätter
Pw = "egger06" ''''''####################ändern hier nur für probedatei#########

' Hole das aktuelle Datum und den aktuellen Monat

aktuellesDatum = Date '''####### aktuelles Datum

aktuellesDatum = Date + 15 '''#### gefaktes Datum


aktuellerMonat = Month(aktuellesDatum)

' Überprüfe jedes Monatsblatt
For Durchlaufe_die_Monatsblaetter = 1 To 12
' Bestimme den Namen des nächsten Monatsblatts
blattName = Format(DateSerial(Year(aktuellesDatum), Durchlaufe_die_Monatsblaetter, 1), "MMMM")

Worksheets(blattName).Activate


' Überprüfe, ob das aktuelle Datum nach dem 17. Tag des aktuellen Monats ist
If aktuellesDatum > DateSerial(Year(aktuellesDatum), aktuellerMonat, 17) Then
' Schütze die Zellen im nächsten Monatsblatt
Worksheets(blattName).Protect Password:=Pw
' Sperre das Blatt
Worksheets(blattName).Protect Contents:=True, UserInterfaceOnly:=True, Password:=Pw
End If
Next Durchlaufe_die_Monatsblaetter


End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 17:51:59
Fennek
Hallo,

wenn die Sheets "ordentlich" angelegt sind (Sheets(1) = Januar, ... Sheets(12) = Dezember


Const PW As String = "SuperGeheimesPassword"

If Month(Date) = 12 Then Exit Sub
Sheets(Month(Date)).Activate

If Day(Date) > 17 Then
ActiveSheet.Next.Protect PW
End If


mfg
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:11:40
STeve
Tausend Dank für die schnelle Antwort lieber Fennek ---------pfeift soweit gut aber leider sind die Blätter nicht korrekt angelegt sondern durcheinander und es sind noch weitere Blätter in der Datei...........vielleicht kannst mir da helfen wie ich nur die mit den Monatsnamen titulierten Blätter ansprechen kann.

lg
Anzeige
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:26:23
Onur
Dim arr

arr = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
Const PW As String = "SuperGeheimesPassword"
If Month(Date) = 12 Then Exit Sub
Sheets(arr(Month(Date)-1)).Activate
If Day(Date) > 17 Then
ActiveSheet.Next.Protect PW
End If

AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:40:13
STeve
Tausend Dank lieber Onur......pfeift perfekt.....habe es eingebaut..............DANKE dir und noch einen schönen Abend...........glg STeve
Gerne !
04.03.2024 18:42:34
Onur
Ich hab aber nur Fennek´s Code etwas "aufgepeppt".
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 17:54:52
Onur
Wozu Schleife?
Es steht, wegen dem aktuellen Datum, bereits fest, welchen Monat wir haben und ob der Tag grösser als 17 ist, also weisst du auch, WELCHES Blatt ggf gesperrt werden muss.
Wozu brauchst du also eine Schleife? WAS soll sie denn untersuchen?
Anzeige
noch'n Gedicht
04.03.2024 19:02:19
Uduuh
Hallo,
ohne Schleife und ohne Array:
  Const strPW = "abcde"

If Month(Date) 12 Then
If Day(Date) > 17 Then
Sheets(MonthName(Month(Date) + 1)).Protect strPW
End If
End If

Gruß aus'm Pott
Udo
AW: noch'n Gedicht
04.03.2024 19:05:26
Onur
Auf MonthName hätte ich auch selber drauf kommen müssen. :)
vielleicht nächstes mal. owT ;-)
04.03.2024 20:09:54
Uduuh
AW: noch'n Gedicht
04.03.2024 19:26:45
Yal
Lol! "MonthName" gibt's. Man entdeckt immer was neues.

Ich hätte kompliziert gebastelt:
Format (DateSerial(Year(Date), Month(Date)+1, Day(Date), "MMMM")


oder
Sheets(Format (DateSerial(Year(Date), Month(Date)-(Month(Date)  12 and Day(Date) > 17), Day(Date), "MMMM")).Protect strPW


VG
Yal
Anzeige
AW: noch'n Gedicht
06.03.2024 15:43:58
STeve
Hallo lieber Yal.................Danke dir tausend Mal für deine Rückmeldung bzw. für deinen Einsatz und deine Mühen so eine komplizierte Zeile /Code auf meine Anfrage zu basteln ......................Alles Gute und Danke dass zu Hilfe anbietest..glg STeve
AW: noch'n Gedicht
06.03.2024 15:41:22
STeve
Hallo lieber Uduuh..........dein Code klappt natürlich auch perfekt...........sieht so einfach aus wenn man dein Wissen und Können hat.........Danke dir tausend Mal für deine Rückmeldung. glg STeve
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:14:49
STeve
Hallo lieber Onur....Danke für deinen Einsatz und so schnelle Hilfe..............hmmmmm wusste mal keinen anderen Weg als per Schleife das akt. Monatsblatt zu ermitteln und dann nach Feststellung des akt. Tages das nächste Monatsblatt zu sperren........????????? lg STeve
Anzeige
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:38:00
ralf_b
wenn es also keine Schleife sein muß, dann evtl so. Verrätst du uns wenn du damit ärgern willst?

Sub SchutzUndSperren()


Dim sh As Worksheet
Dim Pw As String
Pw = "egger06"

On Error Resume Next
If Day(Date) > 17 And Month(Date) 12 Then
Set sh = Worksheets(Format(DateSerial(Year(Date), Month(Date) + 1, 1), "mmmm"))
If Err > 0 Then
Err.Clear
Else
sh.Protect Contents:=True, UserInterfaceOnly:=True, Password:=Pw
End If
End If

End Sub
Anzeige
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:43:13
STeve
Tausend Dank lieber ralph b......cooler Code - muss mich erst mal da zurecht finden....bist auch ein Könner und Gönner............DANKE dir und noch einen schönen Abend......bei Gott will ich niemand ärgern - sondern will den Mitarbeitern helfen und kämpfe mich so durch VBA - wie es halt für mich leistbar ist. ;-))).....glg STeve
AW: Schleife über die Tabellenblätter mit den Monatsnamen
04.03.2024 18:55:13
ralf_b
zur erklärung.

durch set sh =...... weise ich einer Objektvariablen eine Objektreferenz Worksheets("nächsterMonatsname" ) zu.
sollte es einen Fehler dabei geben z.b weil das Blatt nicht existiert, habe ich drum rum eine Fehlerbehandlung gebaut.
wenn es keinen Fehler gegeben hat, dann existiert das nächsteMonats-blatt und kann gesperrt werden.
im Fehlerfall wird er einfach gelöscht.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige