Registriert seit: 17.07.2018
Version(en): 2016
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:
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Ralf, daran, dass die KW immer zweistellig sein sollen, hab ich gar nicht gedacht. 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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• mr_hayabusa
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Ralf, hast Du mein Testmakro mal probiert? Gruß Uwe
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Jetzt ja! :19:
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)
Registriert seit: 17.07.2018
Version(en): 2016
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.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
18.07.2018, 12:13
(Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2018, 12:13 von Kuwer.)
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. Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• mr_hayabusa
|