Beim Starten Hyperlink ausführen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Beim Starten Hyperlink ausführen
von: Robert
Geschrieben am: 04.05.2015 11:46:38

Hallo Zusammen,
ich habe ein meiner Ansicht nach für euch sehr einfach zu lösendes Problemchen, nur leider habe ich nicht viel Ahnung von VBA...
In Spalte A habe ich eine unendliche Anzahl an Daten (z.b. 01.01.2015). Nun möchte ich beim Öffnen der Excel-Datei den heutigen Tag angezeigt bekommen. Das heißt es soll automatisch der aktuelle Tag angesprungen werden. Dafür habe ich bereits in Zelle A1 eine Formel gebaut: =HYPERLINK("#A"&VERGLEICH(HEUTE();A:A);"Heute")
Nun habe ich leider keine Ahnung wie ich Excel in VBA sage, dass es diesen Link oder meinetwegen auch den Wert der Zelle A1 beim Starten ausführen soll.
Ich habe unter vielem anderen bereits Folgendes ausprobiert; leider erscheint eine _
Fehlermeldung:


Sub Workbook_open()
ActiveWorkbook.FollowHyperlink ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value
End Sub

Danke für euere Hilfe!!!

Bild

Betrifft: AW: Beim Starten Hyperlink ausführen
von: Klaus M.vdT.
Geschrieben am: 04.05.2015 12:02:58
Hallo Robert,
am einfachsten so:
Stelle erstmal mittels Formel fest, in welche Zeile du willst. Das könnte so aussehen:
in B1 =VERGLEICH(HEUTE();A:A;FALSCH)
Jetzt steht in B1 zum Beispiel eine 27, weil "heute" ab Zeile 27 losgeht.
Dann per VBA einfach Zelle 27,1 ansprechen, wobei die 27 aus der Zelle kommt:


Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
Cells(Range("B1").Value, 1).Select
End Sub

Ordentlicher, aber etwas schwieriger: Übernimm die VERGLEICH-Formel direkt in das VBA, so brauchst du keine Hilfszelle mehr.
Grüße,
Klaus M.vdT.

Bild

Betrifft: AW: Beim Starten Hyperlink ausführen
von: Robert
Geschrieben am: 04.05.2015 14:03:52
Hallo Klaus,
das ist eine sehr gute Idee, die ich auch erstmal so anwenden werde.
Und das mit der Übernahme der VERGLEICH-Formel in VBA war genau mein Problem. Habe die Syntax da nämlich noch nicht so ganz verstanden. Ich werde es aber mal weiter versuchen...
Danke für deine Antwort!!

Bild

Betrifft: AW: Beim Starten Hyperlink ausführen
von: Klaus M.vdT.
Geschrieben am: 05.05.2015 07:54:26
In VBA geht es so:

Sub VergleichFormel()
x = Application.WorksheetFunction.Match(Range("B1"), Columns("A"), False)
MsgBox x
End Sub
Eine kleine Fehlerkorrektur sollte aber dazu, falls Match nichts findet.
Grüße,
Klaus M.vdT.

Bild

Betrifft: AW: Beim Starten Hyperlink ausführen
von: Robert
Geschrieben am: 05.05.2015 12:28:59
Aber das setzt ja wieder B1 als Hilfszelle voraus. Damit bin ich ja dann genauso weit wie mit deinem ersten Tipp :)
Und wenn ich das richtig verstanden habe, dann vergleicht er jetzt die Zahl die in B1 steht mit jedem Wert in Spalte A. Da wird er nichts finden, weil in Spalte A verschiedene Kalendertage stehen und nicht etwa Zahlen. Oder seh ich das falsch?
Schön wäre es anstatt Range("B1") da etwas stehen zu haben, was mir direkt das heutige Datum ausgibt. Und dieses Datum dann mit jedem Wert in Spalte A vergleicht und dann dort hinspringt.
Folgendes funktioniert nicht (Laufzeitfehler '1004'):

Private Sub Vergleich()
x = Application.WorksheetFunction.Match(Date, Columns("A"), False)
MsgBox x
Cells(x, 1).Select
End Sub
(Die Kalendertage in Spalte A sind natürlich auch als Datum formatiert)
Danke nochmals für deine Hilfe!! :)

Bild

Betrifft: Application.Match und DATE ?
von: Klaus M.vdT.
Geschrieben am: 05.05.2015 18:31:00
Hi,
auch ich bekomme es mit "date" im VBA-Script nicht zum laufen. Keine Ahnung woran es liegt. Match-e ich auf einen String den es gibt, komme ich in die richtige Zelle. Nur DATE will nicht .... Ich stell mal auf offen!
Damit du nicht im Regen stehst: folgende Lösung funktioniert zumindest:

Sub TestMe()
Dim r As Range
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For Each r In Range("A1:A" & lRow)
    If r.Value = Date Then
        r.Select
        Exit For
    End If
Next r
End Sub

Aber schön oder elegant ist natürlich etwas anderes ... und warum dies geht, aber MATCH nicht, kann ich auch nicht erklären.
Nebenbei: du nennst es:
Private Sub Vergleich()
VERGLEICH ist bereits der Name einer Excelformel. Auch wenn es dieses Mal gut ging, vermeide es aus Prinzip Variablen oder Programme mit bereits belegten Namen zu belegen! Als Namen sind Sachen wie SUMME, Long, integer, Sub .... tabu!
Grüße,
Klaus M.vdT.

Bild

Betrifft: AW: Application.Match und DATE ?
von: Daniel
Geschrieben am: 05.05.2015 19:14:18
Hi
"Date" ist nicht nur die VBA-Funktion für das aktuelle Datum, sonden auch ein (neuer) Datentyp für Datumswerte.
Wie er genau spezifiert ist und wie die automatische Typumwandlung damit umgeht weiss ich auch nicht, auf jeden Fall hat Excel da noch ein Problem.
Datumswerte liegen in Exceln normalerweise als Ganzzahl vor, eine Klassifizierung als Datum erfolgt in Excel allen über das Zahlenformat.
Wenn man sicher gehten will, wandelt man die Datumswerte in ihren Ganzzahlwert um:

x = Application.WorksheetFunction.Match(Clng(Date), Columns("A"), False)

If CLng(r.Value) = Clng(Date) Then
Gruß Daniel

Bild

Betrifft: AW: Application.Match und DATE ?
von: Robert
Geschrieben am: 05.05.2015 21:58:42
Das Problem scheint gelöst zu sein und ich kann leider nicht erklären warum. Oder doch?
Ich habe nun Daniels Tipp angewendet und den Datentyp von Date definiert.
Der finale Code:

Sub VergleichFormel()
x = Application.WorksheetFunction.Match(CLng(Date), Columns("A"), False)
Cells(x, 1).Select
End Sub
Ich bin mir hundertprozentig sicher, dass ich das mit dem Datentyp in genau dieser Art und Weise schon vor Daniels Kommentar ausprobiert hatte und einen "Typenfehler" bekam (Fehler 13 oder so?). Nach mehrfachem rumspielen mit dem Datentyp mit Clng und Cdate dann wieder Fehler 1004.
Dieses Mal hab ich allerdings den Code komplett neu von Hand geschrieben und es ging auf anhieb. Was der Unterschied zwischen jetzt und vorher ist, ist mir ein Rätsel. Zuerst dachte ich, dass es wie Klaus sagte an der Benennung des Subs liegt, aber auch wenn ich es wieder (fälschlicherweise) einfach Vergleich() nenne, funktioniert es.
Der jetzige Code ist denkbar einfach und gefällt mir so.
Ich danke euch sehr für eure Hilfe!
Falls ihr irgendeine Vermutung habt, warum es jetzt funktioniert und vorher nicht, ich höre sie mir sehr gerne an!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Beim Starten Hyperlink ausführen"