Gerds Vorschlag war prinzipiell richtig, ...
15.06.2021 01:14:28
Luc:-?
…Andreas,
nur dürfte die MsgBox ggf noch im Quell-Wb ausgelöst worden und im Ziel-Wb nicht (mehr) erschienen sein (bzw die Datei musste erst geöffnet wdn und deshalb wurde die MsgBox unterdrückt). Ich schlage deshalb vor, im Ziel-Wb einen definierten KonstantenNamen der Mappe (oder des Blattes; ein .Parent weniger!) anzulegen, der dann von der EreignisProzedur gefüllt wird (in den Pgmm deaktiviert) und ggf die ZielDatei zuvor zu öffnen; anderenfalls müsste wohl auf eine so gefüllte globale Variable im Quell-Wb nach Öffnen des Ziel-Wb zurückgegriffen wdn (Ereignis Workbook_Open). Alternativ kann der LinkWert der Quelle aber auch in die ZielZelle geschrieben wdn (aktiviert):
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
' Range(Target.SubAddress).Parent.Parent.Names("LQWert").Value = Target.Range.Value
Range(Target.SubAddress) = Target.Range.Value
End Sub
Echte Hyperlinks wie deine lösen idR 2 Ereignisse aus, zuerst SelectionChange (falls eine andere Zelle ausgewählt war) beim Anklicken, dann FollowHyperlink. Dagegen lösen unechte Hyperlinks (per xlFkt HYPERLINK) nur das 1.Ereignis (unter analogen Bedingungen) aus. Das müsste man in diesen Fällen so regeln (Alternative über benannte Konstante hier ebenfalls deaktiviert):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const txFmlVgl$ = "=HYPERLINK("
Dim adLZiel
If Target.HasFormula Then
If Left(Target.Formula, 11) = txFmlVgl Then
adLZiel = Split(Split(Target.Formula, "(""")(1), """,")(0)
' Range(adLZiel).Parent.Parent.Names("LQWert").Value = Target
Range(adLZiel) = Target
End If
End If
End Sub
Das setzt allerdings voraus, dass die Fml eine (komplette) PfadAngabe als Text enthält und keinen Ausdruck, der sie erzeugt. Anderenfalls müsste die adLZiel-Zeile split-mäßig entsprd angepasst wdn.
Wird der LQWert wie in den hier aktivierten Varianten direkt in die ZielZelle geschrieben wird ggf auch noch das Change-Ereignis ausgelöst. Letzteres ist aber nicht der Fall, wenn die HYPERLINK-Fkt direkt zum Senden eines Wertes an ein Ziel benutzt wird, was möglich ist, wenn man als HL-Ziel ein voll und entsprd parametriertes Pgm* angibt (InternLink mit #). Allerdings ist dann nur das Senden möglich, der Sprung zum Ziel wird nicht ausgeführt, auch wenn das Pgm ihn enthält. Das ist prinzipiell auch mit einem echten Hyperlink möglich, birgt aber Unwägbarkeiten° je nach auszuführendem Pgm.
* Die Angabe nur des PgmNamens auf diese Weise gilt als interner Link zum PgmStandort in der Datei oder einem aktiven AddIn. Wdn dazu leere Klammern angegeben, wird das Pgm ebenfalls aufgerufen, aber läuft in einen Fehler, falls es auch nicht-optionale Parameter (Argumente im Falle einer ebenfalls so aufrufbaren Fkt/UDF) verlangt.
° Ich habe beim Testen erlebt, dass Xl-Adressen in Fmln auf Z1S1-Form umgestellt wurden, was bei Fml-Hyperlinks nicht passieren kann, obwohl die Blätter selbst im A1-Standard blieben. Das führt dann natürlich zu FehlerWerten.
Morhn, Luc :-?