Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler bei AddComment

Fehler bei AddComment
27.07.2015 15:32:43
Juli
Hallo,
warum meldet mir vba bei dem Code:
Set Kommentar = Worksheets("Tabelle1").Cells(4, Spalte).AddComment
eine "Anwendungs- oder objektdefinierter Fehler" - Meldung?
Der komplette Code:
Sub Markiere_KW(iKW As Integer, iJahr As Integer, Bezeichnung As String)
Dim Kommentar As Variant
Dim Spalte, SpalteMax As Long
Dim KWgegeben, KWgesucht As Integer
If iKW > 0 And iJahr > 0 And iJahr = 2014 Then
'markiere im Bereich "2014"
SpalteMax = Worksheets("Tabelle1").Cells(3, 56).Column
KWgegeben = iKW
For Spalte = 5 To SpalteMax
KWgesucht = Worksheets("Tabelle1").Cells(3, Spalte)
If KWgegeben = KWgesucht Then
Worksheets("Tabelle1").Cells(4, Spalte).Interior.ColorIndex = 5
Set Kommentar = Worksheets("Tabelle1").Cells(4, Spalte).AddComment
Kommentar.Visible = True
Kommentar.Text Text:=Bezeichnung
Kommentar.Shape.LockAspectRatio = msoTrue
Kommentar.Shape.Height = 15
Kommentar.Shape.Width = 25
Kommentar.Shape.IncrementTop 6.75
Kommentar.Shape.Fill.ForeColor.SchemeColor = 5
Exit For
End If
Next Spalte
End If
End Sub
Danke für die Hilfe

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kommentar ist kein Variant...
27.07.2015 15:44:19
Michael
Hallo Juli,
... sondern Dim Kommentar as Object
Du kannst dann auch nach Deiner Set-Anweisung mit einer With-Anweisung weitermachen und sparst hier etwas Schreibarbeit
With Kommentar
.Visible = True
.Text Text:= Bezeichnung
'usw usf
End With
LG
Michael

AW: Ergänzung...
27.07.2015 15:59:48
Michael
Hallo nochmal!
Außerdem ist aus meiner Sicht der Weg über eine Objekt-Variable für den Zellkommentar gänzlich unnötig:
With Worksheets("Tabelle1").Cells(3, Spalte).AddComment
.Visible = True
.Text Text:="Lorem ipsum"
.Shape.Fill.ForeColor.SchemeColor = 5
'usw. usf.
End With
funktioniert genauso.
LG
Michael

Anzeige
AW: Ergänzung...
28.07.2015 15:58:23
Juli
Vielen lieben Dank!
Also kann ich die "Deklaration" komplett weglassen?
Wie kommt das überhaupt? Brauch ich denn da gar kein Objekt/Variable dazu?
Bin grad dabei die Sprache zu lernen.
Viele Grüße
Juli

AW: Zur Info
28.07.2015 16:27:16
Michael
Servus Juli!
Ja die Deklaration und Dimensionierung Deiner Variablen "Kommentar" kannst Du in diesem Fall gänzlich weglassen.
In Deinem ersten Beitrag hast Du die Variable "Kommentar" mit dem Datentyp "Variant" dimensioniert. Vereinfacht würde das bedeuten, dass die Variable dann, je nach übergebenem Wert, selbständig entscheidet zu welchem Datentyp (Long, Single, Integer...) sie wird. Du übergibst aber gar keinen Wert - sondern möchtest mit einem "Element aus Excel" (in dem Fall einem Zellkommentar) "etwas machen".
Insofern klappt Dein erster Code nur wenn "Kommentar" kein Datentyp sondern ein "Objekt" ist; also ein Programmelement mit dem "etwas gemacht wird". Aber...
"Füge einen Zellkommentar hinzu" ist bereits eine Methode (also eine Möglichkeit etwas mit einem Excel-Element zu machen) einer Range (in diesem Fall einer bestimmten Zelle). Daher reicht, was ich Dir in meiner Ergänzung vorgeschlagen habe: Du nutzt einfach nur die vorhandene Methode "Füge einen Zellkommentar hinzu" derjenigen Zelle, die Du eben gerade ansprichst (Cells(3,Spalte)... ).
Analog nutzt Du bspw. auch bei
Columns(1).AutoFit
die Methode "Passe meine Spaltenbreite automatisch an" für Spalte A. Auch hier willst Du mit einem Excel-Element (einer Spalte) "etwas machen" (automatische Anpassung der Breite), d.h. eine Methode nutzen.
Lg
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige