Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Beim Starten Hyperlink ausführen

Beim Starten Hyperlink ausführen
04.05.2015 11:46:38
Robert
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!!!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim Starten Hyperlink ausführen
04.05.2015 12:02:58
Klaus
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.

Anzeige
AW: Beim Starten Hyperlink ausführen
04.05.2015 14:03:52
Robert
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!!

AW: Beim Starten Hyperlink ausführen
05.05.2015 07:54:26
Klaus
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.

Anzeige
AW: Beim Starten Hyperlink ausführen
05.05.2015 12:28:59
Robert
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!! :)

Anzeige
Application.Match und DATE ?
05.05.2015 18:31:00
Klaus
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.

Anzeige
AW: Application.Match und DATE ?
05.05.2015 19:14:18
Daniel
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

Anzeige
AW: Application.Match und DATE ?
05.05.2015 21:58:42
Robert
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!
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige