26.08.2020, 10:13 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2020, 10:52 von klaasen82.)
Hallo alle zusammen,
ich habe ein Anliegen bezüglich eines Arbeitsplans, den ich zur Einteilung von Personal verwende. Es sind im Grunde nur Tabellen untereinander, obendrüber immer das aktuelle Datum. Nun versuche ich vergeblich via VBA ein Makro zu erstellen mit dem man per Schaltflächen-Klicken auf den aktuellen Tag springt. Egal in welcher Registerkarte man sich befindet. Fortschritte mache ich hierbei leider nicht..
Ich habe mal eine Beispieldatei angefügt mit Erklärung.
in ein Modul, was du einem Butten auf jedem Blatt zuordnen kannst
Code:
Sub Datum() Dim TB As Worksheet, Zeile As Long, SP As Integer Dim WF
Set TB = ActiveSheet SP = 1 ' Datum steht in Spalte A Set WF = WorksheetFunction Zeile = WF.CountIf(TB.Columns(SP), Date) 'Ist Datum vorhande
If Zeile > 0 Then Zeile = WF.Match(CDbl(Date), TB.Columns(SP), 0) 'in Welcher Zeile Application.Goto TB.Cells(Zeile, SP), True 'True = Es wird hingescrollt; False = Es wird nur ausgewählt End If End Sub
Das funktioniert in der Registerkarte selber schon einmal toll! Allerdings nicht, wenn das Datum in einer anderer Registerkarte liegt. Gibt es hierfür auch eine Lösung?
Sub tester() Sheets(Format(Date, "MMM")).Activate Cells(WorksheetFunction.Match(CDbl(Date), Columns(1), 0), 1).Activate End Sub
Zitat:mit dem man per Schaltflächen-Klicken auf den aktuellen Tag springt.
... ohne Prüfung, ob Datum existiert. Da Deine Beispieldatei 2021 beinhaltet, würde das heute nicht gehen. Morgen und übermorgen auch nicht. Wird wohl noch ein paar Tage dauern
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Beide Varianten haben funktioniert. Habe das Datum von Windows als Test einfach einmal manuell geändert. Nun tritt aber folgendes Problem mit einem Mal auf, wenn ich das Makro auslöse:
Fehler: "die match-eigenschaft des worksheetfunction-objektes kann nicht zugeordnet werden"
Ich habe nicht an der Mappe gearbeitet oder etwas geändert. Hat dazu jemand eine Lösung?
dann gibt es auf dem Blatt in der Spalte A das Datum nicht.
Mit Prüfung:
Code:
Sub Datum() Dim TB As String, Datum As Date, Zeile As Integer Datum = Date
TB = Format(Date, "MMM") If WorksheetFunction.CountIf(Sheets(TB).Columns(1), CDbl(Datum)) = 0 Then MsgBox Datum & " auf Blatt '" & TB & "' nicht vorhanden!" Else Zeile = WorksheetFunction.Match(CDbl(Datum), Sheets(TB).Columns(1), 0) Application.Goto Sheets(TB).Cells(Zeile, 1), True End If End Sub