Mit Hyperlinks zu bestimmten Daten springen
#1
Hallo Community!

Ich bin neu hier, weil ich auf der Suche nach einer Lösung für ein Problem bin, das für mich alleine zu kompliziert ist. Meine Hoffnung liegt nun auf eurer Expertise.

Ich erstelle gerade einen Urlaubsplaner für meine Abteilung. Der Planer ist, vereinfacht beschrieben, so aufgebaut, dass in der Spalte A ab Zeile 10 die Namen der Kollegen eingetragen sind. In Zeile 9 stehen die Daten vom 01.01. bis zum 31.12. im Format TTT TT.MMM. In der Zelle A1 steht das Jahr, für welches des Planer gedacht ist und aus dem sich dann die Inhalte der Zeile 9 berechnen. Nicht immer ist der 01. Januar auch ein Montag...

Da so natürlich eine in horizontaler Ausdehnung lange Tabelle entsteht, möchte ich in freien Zellen unter den Namen gerne die einzelnen Monate eintragen und dann mit einem Hyperlink in die jeweilige Zelle der Zeile 9 springen.

Beispiel:
Mit einem Klick auf "Mai" springt man zu der Zelle in Zeile 9 mit dem Datum des 01.05.

Der Grund ist der, dass ich den Anwendern eine Möglichkeit geben möchte, schnell in der breiten Tabelle zu Navigieren, ohne die Scrollbar zu verwenden.

Nachdem ich ein paar Dinge ausprobiert habe, musste ich einsehen, dass mir selbst keine Lösung einfällt. Weiß jemand von euch, wie ich mein Vorhaben bewerkstelligen kann?


Viele Grüße!  Thumbsupsmileyanim
Top
#2
Hi

Habe das mal meinen Kalender hinzugefügt.
Schau es dir an und evtl. kannst du was verwenden.

.xlsx   Dienstplan Kalender Spalten.xlsx (Größe: 29,35 KB / Downloads: 24)

Gruß Elex
Top
#3
Hallo Elex!

Ja, ich verstehe, was du meinst. Das ist wirklich nicht sonderlich toll.

Wie sähe denn eine Lösung mittels VBA aus?

Angenommen, ich platziere zwölf Buttons mit Januar bis Dezember. Wie sähe dazu der Code aus? :92:
Top
#4
Hi

Für meinen Kalender.
Mach dir 12(Button oder Formen) und weise denen das Makro zu.
Die Namen der Button oder der Formen sind.
Für den Jan Button als Name die 1 vergeben. Mai heißt 5 usw…

Der Code kommt in ein allgemeines Modul.
Code:
Public Sub Sprung()
Dim n As Long
With Sheets("Dienstplan")
   n = DateSerial(.Range("A1"), Application.Caller, 1) - DateSerial(.Range("A1"), 1, 1)
   Application.Goto Reference:=.Cells(9, n + 10), scroll:=True
End With
End Sub
Gruß Elex
Top
#5
Hallo Elex,

:70:
Ich versuche gerade, deinen Code zu verstehen. 

Die with-Anweisung habe ich soweit verstanden. Die nächste Zeile(n) allerdings nicht so recht...  Huh

Du füllst n mit dem Datum (Jahr aus A1, Application.Caller, und Tag 1) und ziehst davon dann das Datum (Jahr aus A1, Monat 1, Tag 1) ab?

Application.Caller war bis eben für mich unbekannt und warum ziehst du das Datum dahinter noch einmal ab?
Und was macht die Zeile darunter?  :16:


Ich selbst habe derweil angefangen, mit der Methode Range.Find zumindest das heute Datum zu in Zeile 10 zu finden.
Versucht habe ich es mit

Code:
Dim Ziel as Range

Set Ziel = Range("L10:OF10").Find(DateSerial(Year(Date), Month(Date), 1))

Davor habe ich in A1 das aktuelle Jahr 2020 eingetragen.

Hat leider auch nicht funktioniert, da der Code irgendwie nicht mit den Inhalten in Zeile 10 arbeiten kann. Das Ergebnis war immer Nothing.
Erst als ich manuell 01.10.2020 eingetragen habe, hat er den Inhalt gefunden und die Variable Ziel passend gefüllt.

Ich hänge die Datei mal mit an. Vielleicht erkennt der Fachmann ja sofort, warum das nicht funktioniert hat.

Viele Grüße!


Angehängte Dateien
.xlsm   Testplaner_leer.xlsm (Größe: 136,2 KB / Downloads: 7)
Top
#6
Hallo,

die Find-Methode ist bei Datumsgeschichten sehr unzuverlässig. Besser geeignet ist da die Funktion VERGLEICH(). In VBA gepackt dann z.B. so:

Code:
Private Sub Worksheet_Activate()
    Dim Jahr As Long
    Jahr = Range("A1").Value
    With Range("L10:OF10")
      Application.Goto .Cells(Application.Match(CDbl(DateSerial(Year(Date), Month(Date), 1)), .Cells, 0)), True
    End With
End Sub

Gruß Uwe
Top
#7
Hallo Uwe!

Danke, wieder etwas dazu gelernt!

Ich habe das jetzt in meinem Planer ausprobiert und wenn ich im Jahr 2020 plane, läuft dein Code sehr gut!

Vielen Dank! Jetzt muss ich den nur noch verstehen und dann kann ich damit weiter machen.

Jetzt habe ich nur noch das Problem, dass der Planer bis zum 31.12. dieses Jahres nicht so recht benutzt werden kann.  Confused
Wenn ich den Urlaub für 2021 planen möchte, kann er mir ja nicht zum 01.10. dieses Jahres springen, sobald ich das Tabellenblatt aktiviere!?

Macht es Sinn, dass mit einer if-Anweisung abzufragen?
Top
#8
Hallo,

ob das Sinn ergibt, weiß ich nicht. Du brachtest die Automation ins Spiel, während Elex noch bei einer Button-Version war. Wink

Gruß Uwe
Top


Gehe zu:


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