Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Comment Threaded in Excel 2016

Forumthread: Comment Threaded in Excel 2016

Comment Threaded in Excel 2016
31.05.2021 14:26:43
Katja
Moin liebes Forum,
ich hoffe Ihr könnt mir helfen.
Ich schreibe an einem Excelprogramm das bereits bei etlichen Kunden im Einsatz ist.
Bei einem Kunden verzweifele ich allerdings.
Es geht um commentthreaded.
Der Kunde hat Excel 2016 32 BIT im Einsatz.
Allerdings läuft immer ein Befehlt CommentThreaded auf ein Fehler.
Hintergrund: in diesem Excel ist der Befehl nicht enthalten, VBA kenn bei diesem Kunden einfach kein Threaded Comment.
Das scheint nur bei diesem Kunden der Fall zu sein, ich bekomme es auch einfach nicht abgefangen.
Ich frage die Excelversion an (Application.version) ob die Version 16 vorliegt (Läuft auch bei andern Kunden).
Dann habe ich ein On Error goto verbaut
Ich frage auf Nothing ab.
Trotzdem läuft der Aufruf von CommentThreaded auf einen Fehler, da dieser Befehlt einfach nicht vorhanden ist.
Was kann ich noch machen um den Fehler abzufangen, jemand eine Idee?
Oder woran kann es liegen dass Excel 2016 den Befehl nicht kennt?
Liegt es ggf. an 32 Bit Version?
Fehlendes Update VBA seitig?
Irgendwie weiß ich langsam nicht weiter.
Besten Dank für eure Hilfe
Katja
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Comment Threaded in Excel 2016
31.05.2021 14:43:25
ChrisL
Hi Katja
Wäre interessant zu wissen, wie die Fehlermeldung lautet und auf welcher Zeile der Debugger hängen bleibt.
Dass Excel 2016 das Feature nicht unterstützt kann ich nachvollziehen. Jedoch sollte das Fehlerhandling funktionieren. Vielleicht überspringt das Fehlerhandling noch andere wichtige Codezeilen, was dann zu einem Folgefehler führt.
Jedenfalls lassen sich folgende Beispiele in XL2016 mit On-Error leicht überspringen:

Sub t()
On Error Resume Next
Range("a1").CommentThreaded.Text "Test"
Range("a1").AddCommentThreaded "Test"
Range("a1").blablablabla
End Sub
cu
Chris
Anzeige
AW: Comment Threaded in Excel 2016
31.05.2021 14:48:14
EtoPHG
Hallo Profi(n) Katja,
Diese Eigenschaft gibt es erst seit Office 365 (bzw. XL 2019) und es ist katastrophal Code auf dieser Basis zu Entwickeln.
Das finde ich im Übrigen eine der Überflüssigsten Features in den immer wirrer werdenden Roadmaps und Versionen von Excel.
Gruess Hansueli
AW: Comment Threaded in Excel 2016
31.05.2021 15:09:53
Katja
Moin Hansueli,
absolut deiner Meinung.
Ich hatte auch davor gewarnt dieses Feature zu implementieren, da ich es programmatisch als schwierig empfinde.
Üblicherweise wissen ja immer alle mehr als die Person die sich damit beschäftigt.....
Ich habe mal meine aktuelle Fehlerbehandlung angefügt:
Evtl. habe ich ja einfach irgendwas übersehen und euch fällt es sofort auf.
Ihr seht die ist schon recht aufwendig geworden, ist halt immer weiter gewachsen.
Gruß
Katja

If IsNumeric(left(Application.version, 2)) Then
If CInt(left(Application.version, 2)) >= 16 Then
'28477 KB 20.5.2020 Anpassung der Fehlerbehandlung. Es gibt eben doch Excel 2016 Versionen wo das nicht Lauffähig ist
On Error GoTo jumpOvera
If Not lactsheet.Range("c1").CommentThreaded Is Nothing Then
lactsheet.Range("c1").CommentThreaded.Delete
End If
On Error GoTo Jumpover2a
jumpOvera:
lactsheet.Range("C1") = ""
Jumpover2a:
On Error GoTo handleCancel
Else
lactsheet.Range("C1") = ""
End If
Else
lactsheet.Range("C1") = ""
End If

Anzeige
AW: Comment Threaded in Excel 2016
31.05.2021 16:09:57
ChrisL
Hi
Der Schnipsel wird bei mir (XL 2016) ohne Fehlermeldung bzw. mit Fehlerhandling ausgeführt.
Da die Bedingung grösser/gleich 16 lautet, wird der CommenThreaded-Teil ausgeführt, jedoch mit jumpOvera übersprungen. Die eingefügte MsgBox "x" wird danach ausgeführt.

Sub t()
Set lactsheet = ActiveSheet
If IsNumeric(Left(Application.Version, 2)) Then
If CInt(Left(Application.Version, 2)) >= 16 Then
'28477 KB 20.5.2020 Anpassung der Fehlerbehandlung. Es gibt eben doch Excel 2016 Versionen wo das nicht Lauffähig ist
On Error GoTo jumpOvera
If Not lactsheet.Range("c1").CommentThreaded Is Nothing Then
lactsheet.Range("c1").CommentThreaded.Delete
End If
On Error GoTo Jumpover2a
jumpOvera:
lactsheet.Range("C1") = ""
MsgBox "x"
Jumpover2a:
On Error GoTo handleCancel
Else
lactsheet.Range("C1") = ""
End If
Else
lactsheet.Range("C1") = ""
End If
Exit Sub
handleCancel:
MsgBox "y"
End Sub
cu
Chris
Anzeige
AW: Comment Threaded in Excel 2016
31.05.2021 16:17:59
Katja
Hi Chris,
ja genau.
So funktioniert der Code auch bei allen anderen Kunden.
So wäre-ist- auch meine Erwartung.
Das macht es ja so kurios dass es bei einem Kunden nicht funktioniert.
Daher meine Idee ob es an dem Excel selbst liegen kann, fehlendes Update o.ä.
Irgendwo im Netz habe ich einen kleinen Nebensatz gefunden - den ich aber nicht so recht glauben kann- dass es an der Lizenz liegen kann, dass bei unbefristeten Lizenzen von Excel 2016 nicht alle Updaten auch geladen werden und CommentThreaded daher nicht verfügbar ist.
Lizenz wäre eine Katastrophe, wie soll man das absichern?
Viele Grüße
Katja
Anzeige
AW: Comment Threaded in Excel 2016
31.05.2021 16:42:04
ChrisL
Hi Katja
Updates durchführen ist immer eine gute Idee, aber würde mich erstaunen, wenn dies die Lösung des Problems wäre. Ebenfalls scheint mir ein Lizenzproblem eher unwahrscheinlich.
Wie erwähnt, selbst ein Fantasiebefehlt wie Range("A1").blabla lässt sich überspringen.
Ich würde mal den Wortlaut der Fehlermeldung und Stopp-Punkt vom Debugger erfragen. Auch wenn ich keine konkrete Lösung bereit habe, ein Kompilierungsfehler würde dann doch darauf hindeuten, dass ein grundlegendes Problem mit dem 'unbekannten' Befehl vorhanden wäre.
cu
Chris
Anzeige
AW: Comment Threaded in Excel 2016
31.05.2021 16:43:11
ChrisL
PS: Vielleicht Apple Mac mit komplett anderem (mir unbekanntem) Fehlerverhalten
AW: Comment Threaded in Excel 2016
01.06.2021 16:26:05
Katja
Moin @all,
Lösung gefunden.
Im Grunde war es ganz trivial.
Es gab vorab einen Fehler.
Da unter VBA Fehlerbehandlungen nur 1x funktionieren und ein zweiter Fehler unweigerlich zum Abbruch führt ist genau das hier passiert.
Das Kuriose ist, das Err Objekt war nicht gesetzt.
Die Anwendung von On Error Goto -1 brachte den entscheidenden Durchbruch.
Danke für eure Hilfe!
Gruß
Katja
Anzeige
Na, dann hast du aber Glück gehabt, ...
02.06.2021 02:25:31
Luc:-?
…Katja,
dass in diesem einen Fall VBA das doch kannte. Ansonsten will ich nicht wissen, wie deine FehlerBehandlung zuvor aussah! :-]
Morhn, Luc :-?
Nicht vorhandene VBA-Befehle, -Props, -Meths ...
31.05.2021 23:57:51
Luc:-?
…in einer bestimmten xlVBA-Version führen stets zu einem SyntaxFehler, Katja (& all),
den man nur mit bedingter Kompilierung vermeiden kann. Eine einfache Fehlerbehandlung nutzt bei derartigen VBA-Elementen nichts, da beim Kompilieren auch eine SyntaxÜberprüfung stattfindet, der eine FehlerRoutine völlig egal ist. Das kann man im VBE sehen.
Ein Pgm wird bei normalen Fehlern bis zur FehlerStelle ausgeführt und man kann den Fehler abfangen. Bei Feststellung eines SyntaxFehlers wird es gar nicht erst ausgeführt, da es nicht konsistent kompiliert wdn kann.
Übrigens kann man so auch von (einstellbaren) Bedingungen abhängige PgmAusführungen realisieren, was bspw hier gemacht wurde.
Morhn, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Anzeige
;
Anzeige

Infobox / Tutorial

Probleme mit Comment Threaded in Excel 2016 beheben


Schritt-für-Schritt-Anleitung

  1. Überprüfe die Excel-Version: Stelle sicher, dass die Excel-Version, die du verwendest, die Funktion CommentThreaded unterstützt. Diese Funktion ist in Excel 2016 (32-Bit) oft nicht verfügbar, insbesondere bei unbefristeten Lizenzen.

    If IsNumeric(Left(Application.Version, 2)) Then
       If CInt(Left(Application.Version, 2)) >= 16 Then
           ' Hier folgt dein Code
       Else
           MsgBox "Diese Excel-Version unterstützt keine threaded Kommentare."
       End If
    End If
  2. Implementiere Fehlerbehandlung: Benutze On Error GoTo, um Fehler abzufangen, die auftreten, wenn CommentThreaded nicht erkannt wird.

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  3. Testen des Codes: Teste den Code bei verschiedenen Kunden, um sicherzustellen, dass die Fehlerbehandlung überall funktioniert.


Häufige Fehler und Lösungen

  • Fehler: "Method or data member not found": Dieser Fehler tritt auf, wenn die CommentThreaded-Methode nicht verfügbar ist. Überprüfe die Excel-Version und führe ggf. ein Update durch.

  • Fehler bei der Fehlerbehandlung: Wenn On Error nicht den gewünschten Effekt hat, kann es daran liegen, dass ein anderer Fehler aufgetreten ist, der nicht behandelt wird. Stelle sicher, dass du dein Fehlerhandling so anpasst, dass es alle möglichen Fehler abfängt.


Alternative Methoden

Wenn die CommentThreaded-Funktion nicht verfügbar ist, kannst du stattdessen die AddComment-Methode verwenden, die in älteren Versionen von Excel unterstützt wird.

Range("A1").AddComment "Das ist ein Kommentar."

Diese Methode ist möglicherweise weniger flexibel, bietet aber eine einfache Lösung, wenn du mit älteren Excel-Versionen arbeitest.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine CommentThreaded-Funktion in VBA verwenden kannst, die die oben genannten Schritte integriert:

Sub BeispielCommentThreaded()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    If IsNumeric(Left(Application.Version, 2)) Then
        If CInt(Left(Application.Version, 2)) >= 16 Then
            On Error GoTo Fehlerbehandlung
            ws.Range("A1").CommentThreaded.Text "Das ist ein threaded Kommentar."
            Exit Sub

        Else
            MsgBox "Diese Excel-Version unterstützt keine threaded Kommentare."
        End If
    End If

Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
End Sub

Tipps für Profis

  • Verwende bedingte Kompilierung: Um sicherzustellen, dass dein Code in verschiedenen Excel-Versionen funktioniert, kannst du bedingte Kompilierung verwenden. Dies hilft, Syntaxfehler zu vermeiden, die bei bestimmten VBA-Versionen auftreten können.

  • Dokumentiere deine Fehlerbehandlungen: Eine klare Dokumentation hilft dir, Fehlerquellen schneller zu identifizieren und zu beheben.


FAQ: Häufige Fragen

1. Warum funktioniert CommentThreaded in meiner Excel-Version nicht? Die CommentThreaded-Funktion ist nur in neueren Versionen von Excel (ab Office 365 oder Excel 2019) verfügbar. Excel 2016 unterstützt diese Funktion möglicherweise nicht vollständig.

2. Was kann ich tun, wenn ich einen Syntaxfehler bekomme? Syntaxfehler können oft durch die Verwendung von nicht unterstützten Befehlen in deiner Excel-Version verursacht werden. Überprüfe, ob du bedingte Kompilierung verwenden kannst, um diese Fehler zu umgehen.

3. Gibt es Alternativen zu CommentThreaded? Ja, du kannst die AddComment-Methode verwenden, um einfache Kommentare hinzuzufügen, wenn die CommentThreaded-Funktion nicht verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige