Fehler beim Einfügen einer Hyperlinkformel

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Fehler beim Einfügen einer Hyperlinkformel

    Hi,

    ich mal wieder.
    Folgendes Problem:

    beim Einfügen einer Hyperlinkformel in eine Excel Zelle bekomme ich einen Fehler.
    Wenn ich erst die Zelle fülle und anschließend das Zellformat auf "General" setze (war vorher auf "Text") wird der Link als Text angezeigt.
    Gehe ich dann manuell in die Bearbeitungszeile von Excel und wieder raus, funktioniert der Link.
    Setze ich erst das Zellformat und füge dann den Link ein bekomme ich:
    "Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))"

    VB.NET-Quellcode

    1. ​ strLink = "=HYPERLINK(""files\" & M3row.Item("Link") & ".""&Herstellerauswahl!C4;""Auswahl / Select "")"
    2. .Cells(4 + M3count, 3).NumberFormat = "General"
    3. '.Cells(4 + M3count, 3).FormulaR1C1 = strLink
    4. .Range(.Cells(4 + M3count, 3), .Cells(4 + M3count, 3)).Formula = strLink
    5. .Cells(4 + M3count, 3).Select()


    Ich habe unterschiedliche Reihenfolgen probiert. Normale Formeln (Summe o.ä.) funktionieren.
    Objektbibl. ist Ms.Office 14

    Hat jemand eine Idee? ?(

    Wolfy
    @Wolfy Probier dies mal an einer Tabelle im geöffneten Excel aus.
    Das Format Hyperlink wird hier nicht angeboten.
    Füge ich einen Hyperlink in eine Zelle ein, wird die zunächst als Standard erkannt.
    Mit dem Klick darauf oder Taste Enter wird der Link blau dargestellt und das Kontextmenü bietet an, den Hyperlink zu bearbeiten, zu öffnen und zu entfernen.
    Das Format ist nach wie vor Standard.
    Ich denke mal, dass der Inhalt der Zelle erst nach Verifizierung so was wie ein Unterformat Hyperlink bekommt, und die Verifizierung passiert beim Klicken oder Enter-drücken.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich würde keine Excelformel für den Hyperlink verwenden, sondern den direkt über VBA einfügen.

    Visual Basic-Quellcode

    1. ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="http://www.google.de", TextToDisplay:="Google"

    Du musst halt ActiveSheet und ActiveCell durch die richtigen Objekte ersetzen.
    Falls benötigt, kannst du dir auch gleich das Hyperlink-Objekt zurückgeben lassen, dann kannst du es später modifizieren oder auswerten.

    Visual Basic-Quellcode

    1. Set hl = ActiveSheet.Hyperlinks.Add(Anchor:=ActiveCell, Address:="http://www.google.de", TextToDisplay:="Google")
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Hey,

    Lösung gefunden 7 Std harte Arbeit suchen und probieren.

    Das mit Hyperlink.add wende ich auch an. Geht hier nicht, da im Hyperlink der Inhalt einer Zelle ist, Geht nur über Hyperlinkformel.

    Aber:
    MS dokumentier hierbei nicht sauber. Mal geben die in der Formel ein Komma an mal ein Semikolon.
    Es muß ein Semikolon sein!!! Aber wenn man per VBA oder VB die Formel einfügt, muß im String ein Komma angegeben werden. Dies wird dann von der "MS Schnittstelle" in ein Semikolon geändert.
    Daher kommt auch diese Komische 2 deutige Erklärung der Formel. (Mal mit Komma, mal mit Semikolon).

    So ein sch...

    Aber nun geht es.

    VB.NET-Quellcode

    1. ​strLink = "=HYPERLINK(""files\" & M3row.Item("Link") & ".""&Herstellerauswahl!C4,""Auswahl / Select " & M3row.Item("Link") & """)"


    Danke für die Bemühungen :thumbup:
    Wolfy
    Das ist ein altbekanntes Verhalten.
    Excel-Formeln benötigen die regionale Syntax.
    Die ist je nach installierter Sprachversion und parametrierten Regional-Settings unterschiedlich.
    In VBA gilt grundsätzlich, dass Formeln in der englischen Version verwendet werden.

    Es gibt Excel-Entwickler, die sich für die Entwicklung ein US-englisches Excel installieren, dann müssen sie darüber nicht nachdenken.
    Das Ergebnis läuft dann trotzdem auf allen Sprachversionen von Excel.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --