VBA - Kommentartext einer Zelle ändern

Hallo Leute!

Ich möchte die Kommentare meiner Zellen in einem Excel-Sheet dynamisch ändern. Es gibt also eine Tabelle, in der die Kommentare in ver. Sprachen stehen. Aus dieser Tabelle werden die Texte für die Kommentare genommen.

Dazu hab ich folgenden Code:

'zuvor ist noch eine Do While-Schleife
If ActiveWorkbook.Sheets("Language").Cells(x, 10).Value "" Then
**ActiveSheet.Range(strIDs(x)).Comment.Text = ActiveWorkbook.Sheets("Language").Cells(x, 10).Value**
End If

Es geht um die Zeile, die ich fett markiert hab.
Mein Problem: es funktioniert nicht. Der Fehler kommt wie gesagt in dieser markierten Zeile.

Nach ein wenig googeln usw. hab ich gefunden, dass man den Kommentartext irgendwie mit „Text:=“ zuweisen muss… erscheint mir zwar überhaupt nicht logisch, aber ich habs dann eben mal so versucht:

**ActiveSheet.Range(strIDs(x)).Comment.Text Text:=ActiveWorkbook.Sheets("Language").Cells(x, 10).Value**

Klappt aber auch nicht…

Wie kann man den Kommentar einer bestimmten Zelle ändern?
Bitte möglichst einfach, bzw. möglichst wenig Code…
Ich möchte einfach nur den Text ändern, der in der Zelle als Kommentar erscheint.

Please, help :wink:

Danke schon mal, lG
Katharina

Hi Katharina,

Nach ein wenig googeln usw. hab ich gefunden, dass man den
Kommentartext irgendwie mit „Text:=“ zuweisen muss…
erscheint mir zwar überhaupt nicht logisch,

doch, das ist logisch, schon mal in der Hilfe geschaut?

*****************************************************************
Syntax

Ausdruck.Text(Text, Start, Overwrite)

Ausdruck Erforderlich. Ein Ausdruck der ein Comment-Objekt zurückgibt.

Text Variant optional. Der hinzuzufügende Text.

Start Variant optional. Die Nummer des Zeichens, an dem der neue Text eingefügt wird. Wird dieses Argument nicht angegeben, wird bereits bestehender Text im Kommentar gelöscht.

Overwrite Variant optional. True, falls bereits bestehender Text überschrieben wird. Der Standardwert ist False (der Text wird eingefügt).

********************************************************************

aber ich habs dann
eben mal so versucht:
ActiveSheet.Range(strIDs(x)).Comment.Text
Text:=ActiveWorkbook.Sheets(„Language“).Cells(x,
10).Value

Klappt aber auch nicht…

was geschieht genau, Fehlermeldung ?, was steht in „strID(x)“ ? Besitzt diese Zelle einen Kommentar ?

Wie kann man den Kommentar einer bestimmten Zelle ändern?
Bitte möglichst einfach, bzw. möglichst wenig Code…
Ich möchte einfach nur den Text ändern, der in der Zelle als
Kommentar erscheint.

Sub tt()
Range(„B3“).Comment.Text Text:=„huhu“
End Sub

Gibt nur Fehler wenn B3 noch keinen Kommentar besitzt.

Gruß
Reinhard

Gibt nur Fehler wenn B3 noch keinen Kommentar besitzt.

DANKE :wink:))

Hatte wohl gerade ein „Denkloch“…

Also, es funktioniert natürlich mit ActiveSheet.Range(strIDs(x)).Comment.Text Text:=ActiveWorkbook.Sheets(„Language“).Cells(x, 9).Value ABER manche Zellen hatten kein Kommentar…

Danke nochmals Reinhard!
lG
Katharina

Also, es funktioniert natürlich mit
ActiveSheet.Range(strIDs(x)).Comment.Text
Text:=ActiveWorkbook.Sheets(„Language“).Cells(x,
9).Value
ABER manche Zellen hatten kein Kommentar…

Hi Katharina,

ungetestet könntest du den Fehler so umgehen:

with ActiveSheet.Range(strIDs(x))
 if not .Comment is nothing then
 .Comment.Text Text:=ActiveWorkbook.Sheets("Language").Cells(x,9).Value
 else
 'CommentAdd oder AddComment, mußte mal in der Hilfe schauen
 end if
end with

Gruß
Reinhard

ungetestet könntest du den Fehler so umgehen:

with ActiveSheet.Range(strIDs(x))
if not .Comment is nothing then
.Comment.Text
Text:=ActiveWorkbook.Sheets(„Language“).Cells(x,9).Value
else
'CommentAdd oder AddComment, mußte mal in der Hilfe
schauen
end if
end with

Danke sehr!
Ich musste das Problem aber sowieso von vornherein irgendwie beheben.

Vielen Dank für die schnelle Hilfe!

Grüezi Katharina

Ich möchte die Kommentare meiner Zellen in einem Excel-Sheet
dynamisch ändern. Es gibt also eine Tabelle, in der die
Kommentare in ver. Sprachen stehen. Aus dieser Tabelle werden
die Texte für die Kommentare genommen.

Wie kann man den Kommentar einer bestimmten Zelle ändern?
Bitte möglichst einfach, bzw. möglichst wenig Code…
Ich möchte einfach nur den Text ändern, der in der Zelle als
Kommentar erscheint.

Ich habe da mal eine Funktion geschrieben, die Du im Tabellenblatt in einer (oder mehreren) Zelle(n) verwenden kannst.
Damit könntest Du über einen SVERWEIS() sehr einfach die Kommentare der betreffenden Zellen ändern.

Als Parameter wird ein Range erwartet, der den Kommentar-Text enthält und optional die Zelle, die den Kommentar ‚bekommen‘ soll.

Public Function TakeComment(strQuelle As String, Optional rngZiel As Range) As String
 If rngZiel Is Nothing Then
 Set rngZiel = Application.Caller
 End If
 With rngZiel
 If Not .Comment Is Nothing Then
 .Comment.Delete
 End If
 .AddComment strQuelle
 End With
End Function


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Nachfrage

Ich habe da mal eine Funktion geschrieben, die Du im
Tabellenblatt in einer (oder mehreren) Zelle(n) verwenden
kannst.
Damit könntest Du über einen SVERWEIS() sehr einfach die
Kommentare der betreffenden Zellen ändern.

Grüezi Thomas,

wie soll das mit dem Sysverweis funktionieren?

Gruß
Reinhard

Grüezi Reinhard und Kaharina

Ich habe da mal eine Funktion geschrieben, die Du im
Tabellenblatt in einer (oder mehreren) Zelle(n) verwenden
kannst.
Damit könntest Du über einen SVERWEIS() sehr einfach die
Kommentare der betreffenden Zellen ändern.

wie soll das mit dem Sysverweis funktionieren?

SVERWEIS() meinte ich (und Du wohl auch) :wink:

Ja, das hätte ich vielleicht auch gleich noch ausführen sollen.

Hier ein Beispiel, das mit dieser Technik klappt:

Tabellenblatt: [MAPPE1]!Tabelle1
 │ A │ B │ C │ D │ E │ F │ G │
──┼──────────┼─────────────┼───┼───┼─────────┼──────────┼─────────────┤
1 │ Sprache: │ Französisch │ │ │ Deutsch │ Englisch │ Französisch │
──┼──────────┼─────────────┼───┼───┼─────────┼──────────┼─────────────┤
2 │ │ │ │ │ Ich │ I │ Je │
──┼──────────┼─────────────┼───┼───┼─────────┼──────────┼─────────────┤
3 │ Ich │ │ │ │ Du │ You │ Tu │
──┼──────────┼─────────────┼───┼───┼─────────┼──────────┼─────────────┤
4 │ Du │ │ │ │ Er │ He │ Il │
──┼──────────┼─────────────┼───┼───┼─────────┼──────────┼─────────────┤
5 │ Er │ │ │ │ │ │ │
──┴──────────┴─────────────┴───┴───┴─────────┴──────────┴─────────────┘
Benutzte Formeln:
B3: =TakeStrComment(SVERWEIS($A3;$E$1:blush:G$4;VERGLEICH($B$1;$E$1:blush:G$1;0);0);A3)
B4: =TakeStrComment(SVERWEIS($A4;$E$1:blush:G$4;VERGLEICH($B$1;$E$1:blush:G$1;0);0);A4)
B5: =TakeStrComment(SVERWEIS($A5;$E$1:blush:G$4;VERGLEICH($B$1;$E$1:blush:G$1;0);0);A5)

A1:G5
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

B1 enthält ein Gültigkeits-DropDown das den Bereich E1:G1 als Quelle enthält.

Der SVERWEIS() holt sich aus der Matrix E1:G3 die entsprechenden Rückgabewerte, wobei die Spalte aus der die Werte geliefert werden über den integrierten VERGLEICH() ermittelt wird, der sich wiederum auf E1:G1 bezieht.

Wechselt man nun über das DropDown die eingestellte Sprachen werden die Kommentare der Zellen A3:A5 (das sind die Zielzellen der Funktion TakeStrComment()) entsprechend angepasst.
Lässt man die Angabe einer Zielzelle weg, steht der Kommentar in der Zelle, die auch die Funktion TakeStrComment() enthält.

Die Funktion habe ich hier noch umbenannt, damit bei mir kein Konflikt mit einer bereits bestehenden auftritt.

Das Komfortable an diesem Aufbau ist, dass sowohl durch das Verändern im DropDown wie auch durch das Ändern eines Inhalts von A3:A5 der Kommentar sofort angepasst wird (schreib mal ‚Ich‘ in A5 und prüfe den Kommentar).

Mit freundlichen Grüssen
Thomas Ramel

  • MVP für Microsoft-Excel -
    [Win XP Pro SP-2 / xl2003 SP-3]

Grüezi Reinhard und Kaharina

Ich habe da mal eine Funktion geschrieben, die Du im
Tabellenblatt in einer (oder mehreren) Zelle(n) verwenden
kannst.
Damit könntest Du über einen SVERWEIS() sehr einfach die
Kommentare der betreffenden Zellen ändern.

wie soll das mit dem Sysverweis funktionieren?

SVERWEIS() meinte ich (und Du wohl auch) :wink:

Grüezi Thomas,

ja, es war mein Targt SVERWEIS zu schreiben, sowas geht halt gelegentlich schief wie die arme Kaharina jetzt auch weiß *grins*

Ja, das hätte ich vielleicht auch gleich noch ausführen
sollen.

Danke dir für das Beispiel, jetzt habe ich das Prinzip verstanden.
Ich sah noch nie einen Aufruf einer benutzerdefinierten Funktion die eine Excel-Funktion als Parameter benutzte *Respekt*

Das Komfortable an diesem Aufbau ist, dass sowohl durch das
Verändern im DropDown wie auch durch das Ändern eines Inhalts
von A3:A5 der Kommentar sofort angepasst wird (schreib mal
‚Ich‘ in A5 und prüfe den Kommentar).

Das werde ich tun, ich begreife immer irgendwas am Besten wenn ich es „begreifen“ also anfassen kann, theoretische Gebilde wie manche Erklärungen in der Vba-Hilfe begreife ich überhaupt nicht, wenn ich die aber durch Austesten von Code was ja für mich ein „Anfassen“ ist, „begreifen“ kann, klappt das schon, naja, nicht immer, genau dann nicht wenn meine Logik auf die von Excel prallt.

Danke für deine Erläuterungen

Gruß
Reinhard

Grüezi Reinhard

ja, es war mein Targt SVERWEIS zu schreiben, sowas geht halt
gelegentlich schief wie die arme Kaharina jetzt auch weiß
*grins*

Ich grinse mit und entschuldige mich bei der Dame in aller Form…

Danke dir für das Beispiel, jetzt habe ich das Prinzip
verstanden.
Ich sah noch nie einen Aufruf einer benutzerdefinierten
Funktion die eine Excel-Funktion als Parameter benutzte
*Respekt*

Danke für die Blumen - im Grunde ist es egal wie und woher der Parameter kommt. Daher kann ohne weiteres auch eine Funktion dafür herhalten solange der übergebene Datentyp stimmt.

Das eigentlich Interessante an dieser Funktion ist aber, dass sie den Kommentar einer anderen Zelle verändern kann.
Das ist IMO die einzige Ausnamhe von der Regel, dass eine Funktion die aus einer Zelle heraus aufgerufen wird nur einen Rückgabewert liefern darf, nicht aber Inhalte und Formatierungen anderer Zellen verändern.

Mit freundlichen Grüssen
Thomas Ramel

  • MVP für Microsoft-Excel -
    [Win XP Pro SP-2 / xl2003 SP-3]

Grüezi Reinhard

ja, es war mein Targt SVERWEIS zu schreiben, sowas geht halt
gelegentlich schief wie die arme Kaharina jetzt auch weiß
*grins*

Ich grinse mit und entschuldige mich bei der Dame in aller
Form…

Grüß’i Gott die Herren :wink:

Danke Thomas, für diese absolut elegante Methode!
Man lernt wirklich nie aus…

Und danke Reinhard, nochmals, für deine Hilfe (zuvor schon).

Ich drohe euch jetzt mal damit, mich wieder zu melden, falls ich wiedermal Hilfe in diesem Bereich brauche :wink:

Schönen Tag noch,
Katharina

Grüezi Katharina

Grüß’i Gott die Herren :wink:

Danke Thomas, für diese absolut elegante Methode!
Man lernt wirklich nie aus…

Fein, wenns dir so gut gefällt :smile:

Ich drohe euch jetzt mal damit, mich wieder zu melden, falls
ich wiedermal Hilfe in diesem Bereich brauche :wink:

Dann erwarten wir schon mal zitternd deine kommenden Meldungen (ob aus Erwartung oder Furcht wird sich wohl noch weisen). :wink:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -