Visual Studio VSTO Excel Add-in : Worksheet_change event ?

  • VB.NET
  • .NET (FX) 4.0

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

    Visual Studio VSTO Excel Add-in : Worksheet_change event ?

    Moin moin und Hallo,

    die folgende Aufgabe bekomm ich einfach nicht auf eigene Faust und Suche im Netz gelöst:
    • Ich schreibe ein VSTO-Excel-Addin mittels Visual Studio in VB.net
    • Wenn im Sheet XY eine Zellenwert geändert wird, solle dies eine Subroutine auslösen.
    • Ich bin absoluter Vollnoob und verstehe von den Lösungsansätzen im Netz nur Bahnhof bzw. ich habe keinen Schimmer, wo ich diese Ansätze unterzubringen haben. Man verzeihe mir bitte meine grundlose Unwissenheit. Jeder hat mal klein angefangen, ich weiß nur nicht, wo ich hier anfangen soll.
    Da ich bei anderen Problemen oft in diesem Forum fündig geworden bin und ich in Zukunft eventuell weitere Fragen habe, hab ich mich kurzerhand hier registriert und frage nach, ob jmd. einen Lösungsansatz hat.

    Meine Versuche bisweilen:
    • Geht es um die Umsetzung in VBA, so bekomme ich das Problem mit der Subroutine "Worksheet_Change(ByVal Target As Range)" gelost, welche ich direkt einem Tabellenblatt zuordne. In den Tiefen des Internets wird geschrieben, dass dieser Ansatz wohl auch in VB.net umzusetzen sei. Aber mir ist schleierhaft, wo ich das nun in der Visual-Studio Umgebung unter der Verwendung des VSTO-Template unterbringen soll.
    • Ich habe gelesen, dass es wohl mittels "NamedRange.Change Event" ginge. Aber auch da komm ich nicht weiter. Die Code-Schnipsel der microsoft docs sind für mich so zusammenhangslos, dass ich nur schreien möchte.
    • Stundenlang das Netz durchforsten
    Ich wäre super dankbar, wenn ich ein funktionierendes Beispiel (in VB.net) bekämen würde alias: Copy->Paste->Staunen und lernen. Die Aufgabe klingt so trivial, das muss doch möglich sein?

    Liebe Grüße

    Marius
    Du musst einen Handler für WorkSheet.Change aufsetzen.
    Entweder mit AddHandler oder mittels der VB Handles Methode.

    Es gibt übrigens auch ein Event, dass nicht an ein Sheet gebunden ist, sondern zuschlägt, wenn irgend eines der Arbeitsblätter sich ändert:
    Workbook.SheetChange.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo petaod,

    entschuldige bitte meine lange Antwortzeit, die letzte Woche war etwas stressig :) I.wie hab ichs nun hinbekommen, hackel aber noch daran das Event nur dann auszulösen, wenn eine spezielle Zelle verändert wird. Ist das möglich?

    Grüße und danke für die Rückmeldung.