574 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich habe ein Problem zu lösen, da komme ich nicht weiter.

In Spalte B steht forlaufend das Datum nach unten sortiert drin. Die Formel vergleicht das Datum mit dem aktuellen Datum und hüpft auf das aktuelle Datum. So weit so gut.
 
=HYPERLINK("#B"&VERGLEICH(HEUTE();B:B);"zu heute")

Beim Aufruf der Datei soll aber bereits automatisch dieser Hyperlink "angeklickt" werden.
Ich habe also ein Makro aufgezeichnet, dass in Feld A1 die Formel einträgt und diesen Hyperlink dann klickt.

Sub Makro3()
Range("A1").Select
    ActiveCell.FormulaR1C1 = "=HYPERLINK(""#B""&MATCH(TODAY(),C[1]),""zu heute"")"
    Application.Goto Reference:="R6C2"
End Sub

Problem: Der notiert das klicken als "gehe in diese Zelle" und nicht als "Folge dem Link". Ergo lande ich immer wieder in der selben Zeile.

Kann ich die Application.goto Reference irgendwie nach dem Motto schreiben:
Application.Goto Reference:=HYPERLINK(""#B""&MATCH(TODAY(),C[1]),""zu heute"")"

Alles was ich getestet habe, funktioniert leider nicht :(

6 Antworten

0 Punkte
Beantwortet von
Hallo Hilfesuchender,

Schau dir mal Application.FollowHyperlink an:

[url]https://msdn.microsoft.com/de-de/vba/access-vba/articles/application-followhyperlink-method-access[/url]
0 Punkte
Beantwortet von
Hallo xlKing,

ich bin kein VBA Experte, deswegen hab ich das als Makro aufgezeichnet.
Ich verstehe nicht, was ich damit mache. bzw. wie ich die Formel nun da Syntaxmässig an Application.FollowHyperlink anbaue.

Kannst du mir bitte noch mal auf die Sprünge helfen?
0 Punkte
Beantwortet von
Hallo Hilfesuchender,

sorry, war da etwas unter Stress und konnte es nicht testen. Hätte eigentlich über

ActiveWorkbook.FollowHyperlink Address:=ThisWorkbook.Name, SubAddress:="Tabelle1!B12"

funktionieren müssen. Tut's aber nicht. Über Goto ist zu umständlich, da du die Rückgabe erst in die Z1S1-Bezugsart umwandeln musst.

Einfacher ist folgender Code:

[code]Private Sub Workbook_Open()

Sheets("Tabelle1").Select
d = Application.Match(CLng(Date), Range("B:B"), 0)
If Not IsError(d) Then Range("B" & d).Select

End Sub[/code]Füge den in das Modul "Diese Arbeitsmappe" ein.

Zur Erklärung:
Die erste Zeile wählt das gewünschte Arbeitsblatt aus - falls beim letzten Speichern und Schließen ein anderes Tabellenblatt aktiv war.

Die zweite Zeile wandelt das heutige Datum (Date) in eine für die Vergleichsformel verständliche Fließzahl um und schreibt deren Ergebnis in die Variable d

Die dritte Zeile prüft ob das heutige Datum überhaupt angegeben ist und springt dann zu diesem.

Das ganze wird über das Workbook_Open-Ereignis beim Öffnen der Datei ausgeführt.

Dein aufgezeichnetes Makro brauchst du somit dann nicht mehr.  Du hast die Formel ja bereits manuell eingegeben und gespeichert.

Damit das Makro ausgeführt wird, musst du die Datei als xls oder xlsm speichern.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo xlKing,

Danke für deine ausführliche Lösung, das funktioniert perfekt!
Wenn ich jetzt noch mit Schaltfläche auf das aktuelle Datum springen will, was muss ich da als Makro schreiben? Mit Hyperlink wird das ja nur ein "hässlicher" Textlink und mit meinem aufgezeichneten Makro bin ich ja nur auf das Datum gehüpft, an dem ich das Makro aufgezeichnet hab.

Schönen Sonntag wünsche ich.
0 Punkte
Beantwortet von
Entferne einfach das Wort "Private". Dann kannst du gleich das Workbook_Open Makro für die Schaltfläche verwenden.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo xlKing,

hervorragend. Ich sollte mich wirklich mal tiefer mit VBA beschäftigen....

Schönen Sonntag an alle.
...