26.08.2020, 09:13 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2020, 09: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