Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Arbeitsblatt nach aktuellen Datum suchen und öffnen
#1
Hallo!
Ich habe folgendes Problem!
Ich habe mehrere Arbeitsblätter (Tabellen, Reiter) mit der Bezeichnung der Wochen (01 18, 02 18, 03 18, 04 18, .....) 
In diesen Tabellen befinden sich die einzelnen Wochentage mit dem Datum in Zelle D1: Montag, 1. Jänner 2018, I1: Dienstag, 2. Jänner 2018, N1: Mittwoch, 3. Jänner 2018, etc. (der Grund warum es nicht D1, E1, F1 lautet ist, da immer 5 Zellen miteinander verbunden wurden)
Jetzt möchte ich eine Lösung finden, dass bei Start der Arbeitsmappe immer der Reiter mit dem aktuellen Datum geöffnet wird.
Ist es möglich alle Arbeitsblätter (Tabellen) in diesen Zellen nach dem heutigen Datum zu suchen und wenn dieses gefunden wird, der Reiter geöffnet wird?
Sitze schon ca. 3 Tage und suche verzweifelt nach einem passenden Makro..... ähnliche habe ich schon gefunden, jedoch kann ich diese leider nicht für die Lösung meines Problems finden.
Da die Reiter nach Wochen sortiert sind und die die Bezeichnung wie oben genannt 01 18, 02 18....etc heißen, wäre mir schon geholfen, eine passende Formel zu finden, die diesen Reiter der aktuellen Wochen sucht und öffnet.

Bitte Bitte helft mir!!! :22:

   
Antworten Top
#2
Hallo,

füge folgenden Code in das schon vorhandene VBA-Modul DieseArbeitsmappe ein:
Private Sub Workbook_Open()
Worksheets(Application.WeekNum(Date, 21) & Format(Date, " YY")).Activate
End Sub
Speichere die Datei anschließend als Makro-Arbeitsmappe (*.xlsm).

Gruß Uwe
Antworten Top
#3
Moin Uwe!
Deins geht auch in einem Rutsch:
Worksheets(Format(Date, "ww yy", 2, 2)).Activate

Beide Versionen klappen aber nicht bei den "einstelligen" KWs des TE.
Dies ginge dann so:
Worksheets(Format(Format(Date, "wwyy", 2, 2),"00 00")).Activate

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo Ralf,

daran, dass die KW immer zweistellig sein sollen, hab ich gar nicht gedacht. Blush
Dann hätte ich auch noch eine Korrektur:
Sub KW_Test()
Dim myDate As Date
myDate = "1.1.2017"
Debug.Print myDate & " liegt in KW " & Right("0" & Format(myDate + (Format(myDate, "w", 2, 2) > 1), "ww yy", 2, 2), 5)
myDate = "1.1.2018"
Debug.Print myDate & " liegt in KW " & Right("0" & Format(myDate + (Format(myDate, "w", 2, 2) > 1), "ww yy", 2, 2), 5)
End Sub

@mr_hayabusa

so sollte es dann immer gehen:
Private Sub Workbook_Open()
Worksheets(Right("0" & Format(Date + (Format(Date, "w", 2, 2) > 1), "ww yy", 2, 2), 5)).Activate
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • mr_hayabusa
Antworten Top
#5
Verständnisfrage, Uwe:
Warum prüfst Du zusätzlich den Wochentag?

Format(#1/1/17#,"ww", 2, 2)

ermittelt doch bereits zuverlässig die DIN-KW 52

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Hallo Ralf,

hast Du mein Testmakro mal probiert? Wink

Gruß Uwe
Antworten Top
#7
Jetzt ja!  :19:
Thumps_up
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Ganz ehrlichen lieben herzlichen DANKE

DANKE, DANKE, DANKE!!!

Funktioniert einwandfrei!!!

Dieses Makro fragt jetzt die Reiter ab wenn ich die Programmierung richtig lese. Wäre die andere Variante auch möglich, sprich das ich die Zellen auslese?

Ich stelle die Frage nur interessehalber, die bereits von euch erstellte, reicht für mich vollkommen aus.
Antworten Top
#9
Hallo mr_hayabusa,

probiere es mal damit: (Lösche vorher das bestehende Makro!)
Private Sub Workbook_Open()
 Dim datDatum As Date
 Dim strKW As String
 Dim strJahr As String
 datDatum = Date
 strKW = Format(DatePart("ww", datDatum, 2, 2), "00")
 strJahr = Right(Year(datDatum) + (DatePart("ww", datDatum + 7, 2, 2) < strKW), 2)
 On Error Resume Next
 Application.Goto Worksheets(strKW & " " & strJahr).Cells(1, Day(datDatum) * 5 - 1), True
 If Err.Number > 0 Then MsgBox "Das Datum " & datDatum & " wurde nicht gefunden.", vbInformation
End Sub

@Ralf
Meine "Korrektur" war Blödsinn. Dank Deiner Nachfrage hab ich mir das noch mal genauer angesehen.  Blush

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • mr_hayabusa
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste