827 Aufrufe
Gefragt in Tabellenkalkulation von

Hallo in die Runde,

ich brauche mal etwas Hilfe:

Ich möchte in Excel 365 folgendes machen:

Wenn in einer Zelle ein Kommentar oder eine Notiz eingetragen ist, soll dieser Inhalt an eine Variable übergeben werden.

Ich brauche nur ein Beispiel für eine beliebige Zelle.

So in etwa:

dim ko as String

wenn Zelle(1,1) einen Kommentar/Notiz hat,

  dann schreibe den Inhalt in Ko

ende

Ich weiß auch nicht, ob man in VBA eine Notiz und einen Kommentar unterschiedlich ansprechen muss.

Für ein paar weiterführende Info's wäre ich dankbar.

Grüße

Andreas

(ehemals Kauz im alten Forum)

8 Antworten

0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)

Notiz

if Range("C6").Comment.Text = "" then
else
ko = Range("C6").Comment.Text

Kommentar

if Range("C5").CommentThreaded ...

so ungefähr / ungetestet

Gruß Steffen2

0 Punkte
Beantwortet von kauz59 Einsteiger_in (16 Punkte)

Hallo,

Während dieser Code zum Erstellen einer Notiz funktioniert:


    Range("D9").ClearComments: Range("D9").AddComment
    Range("D9").Comment.Visible = False
    Range("D9").Comment.Text Text:=a ' & Chr(10) & ""
    Range("D9") = "I"

Bringt der folgende gleich in der ersten Zeile(fett) einen Fehler:

Laufzeitfehler 91

Objektvariable oder With-Blockvariable nicht festgelegt

Sub komment()

'Notiz

Dim ko As String

  If Range("G14").Comment.Text = "" Then

  Else

    ko = Range("G14").Comment.Text

'Kommentar

  End If

  If Range("G14").CommentThreaded = "" Then

  Else

    ko = Range("G14").Comment.Text

  End If

End Sub

Also erwartet VBA noch eine Definition.

da muss ich dann leider passen.

Grüße

Andreas 

+2 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)

Das Problem ist, dass .Text nicht funktioniert, wenn es gar keine Notiz in der Zelle gibt.

Da muss noch eine Abfrage davor

If Range("G14").Comment Is Nothing Then
Else
    If Range("G14").Comment.Text = "" Then
    Else
    ko = Range("G14").Comment.Text
End If

Gruß Steffen2

+2 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Warum so kompliziert?

If Not Range("G14").Comment Is Nothing Then
    ko = Range("G14").Comment.Text
End If

Bis später, Karin

0 Punkte
Beantwortet von kauz59 Einsteiger_in (16 Punkte)

Hallo Steffen2,

die Abfrage war für die Fehlermeldung der springende Punkt..

Bei der Notiz funzt es jetzt....

Was mir dabei noch auffällt:

Bei mehrzeiligen Notizen wird nur die erste Zeile an die Variable übergeben.

Den Kommentarteil kann ich erst später testen.

Hab hier kein Excel-365.

Bis hierher erst mal ein dickes Danke!

Gruß

Andreas

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Andreas,

meinen verkürzten Code hast du getestet? Ich kann übrigens nicht feststellen, dass dabei nur die erste Zeile ausgelesen wird. Allerdings benutze ich Excel2016.

Bis später, Karin
0 Punkte
Beantwortet von kauz59 Einsteiger_in (16 Punkte)

Hallo,

so sieht jetzt mein Probecode aus:

Sub komment()
'Notiz
Dim ko As String
 If Not Range("G14").Comment Is Nothing Then
    ko = Range("G14").Comment.Text
 End If
 
 
'Kommentar
 If Not Range("G14").CommentThreaded Is Nothing Then
    ko = Range("G14").CommentThreaded.Text
 End If
End Sub

So funktioniert es jetzt.

Ich hoffe, ich bekomme das in's  eigentliche Makro eingebaut.wink

Hier bei Excel-365 klappt es auch mit mehrzeiligen Einträgen. - komisch?

Euch beiden vielen Dank.

Grüße Andreas

0 Punkte
Beantwortet von Einsteiger_in (5 Punkte)

Ihr Ansatz ist ganz gut. Ich denke, ich kann mich bewerben. mapquest directions

...