Autor Thema: C# und Application_SheetFollowHyperlink  (Gelesen 2088 mal)

wehmeier.info

  • Newbie
  • *
  • Beiträge
    : 22
    • Ich bin Sven. Ein Clean Code Developer
Hallo zusammen,

heute habe ich mal wieder ein Sahnestückchen aus der .NET-Welt.

In unserem Excel-AddIn benutzten wir die Methode void Application_SheetFollowHyperlink(object sh, Excel.Hyperlink target) um einen Hyperlink vorzubereiten.

Soweit so gut. Der feine und bisher gute Unterschied, wir füllen nicht das Feld target.Address mit einer URL, sondern generieren diese aus der Formel der Zelle.

Ich will und darf jetzt nicht den ganzen Code hier veröffentlichen, daher versuche ich das mal (ungetestet) runterzubrechen.

void Application_SheetFollowHyperlink(object sh, Excel.Hyperlink target)
{
    var screenTip = target.ScreenTip;
    string drilldownUrl;

    drilldownUrl = GetDrilldownUrl(target.Range);

    if (!string.IsNullOrEmpty(drilldownUrl)) {

        // automatisch eine passende Session erzeugen, damit der Anwender sich nicht anmelden muss:
        string sessionKey = GetSessionKey();

        if (!string.IsNullOrEmpty(sessionKey)) {
             drilldownUrl = drilldownUrl + "&Session=" + sessionKey;
        }

         //Drilldown ausführen
        OpenDrilldown(drilldownUrl);
    }
}

Dummerweise funktionieren Hyperlinks aus Formeln bei "gezogenen" Zellen funktioniert nicht bei target.Range

private string GetDrilldownUrl(Microsoft.Office.Interop.Excel.Range currentCell)
{
    ...

    // Formel aus der Zelle auslesen
    string formula = currentCell.FormulaLocal.ToString();

    ...
}

In FormulaLocal steckt nämlich jetzt ein object mit diversen Formeln, die über AutoFill generiert wurden. jetzt reiche ich stattdessen target. Application.ActiveCell rein und alles funktioniert, aber warum ist das so?
 
IP gespeichert

Werbung

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
Hallo,

Du meinst jetzt, dass Target.Range leer ist? Target.Range.Value dann auch? Oder meinste, dass currentCell.FormulaLocal leer ist?
Wie ist es dann mit currentCell.Value?

Gruß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

wehmeier.info

  • Newbie
  • *
  • Beiträge
    : 22
    • Ich bin Sven. Ein Clean Code Developer
Ne... nicht leer, sondern mehr als erwartet. Liegt aber nicht an unseren UDFs, denn das gleiche passiert auch bei der "normalen" Summe.

Es ist eben nur für mich sehr unlogisch. Ich drücke auf einen Hyperlink. Dieser MUSS sich in einer Zelle befinden. target heisst zwar Ziel (wo geht es hin), aber bei target.Range hätte ich die Quelle = Zelle (wo komme ich her) erwartet und nicht irgendeine Gruppe
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
Hallo,

sorry, kann dem nicht so richtig folgen. Müsste es eigentlich sehen.

Gruß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Amemason

  • Newbie
  • *
  • Beiträge
    : 1
How do I do this?
 
IP gespeichert

Werbung

 

An- und Abmeldung

 
 

Tools

Werbung