Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
252to256
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
252to256
252to256
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

AddComment: mal geht's, mal nicht...?

AddComment: mal geht's, mal nicht...?
10.05.2003 22:41:08
Franz W.
Guten Abend Fachleute,

ich hab's verschiedenstes probiert, aber ich kriegs nicht hin: in habe in ein und derselben SUB zweimal einen Teil, um einen Kommentar einzufügen, und zwar beide Male mit exakt demselben Code!! Beim ersten Mal klappts, beim zweiten Mal beschwert er sich, und ich habe leider keine Ahnung warum!?!

Der Code:

Die Fehlermeldung kommt, wenn zum zweiten Mal folgende Stelle aufgerufen wird:
Set cmt = Cells(t + 1, m).AddComment _
(Text:=Chr(10) & (Cells(t + 1, m).Value) & Chr(10))

Die Fehlermeldung:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler

Könnt Ihr mir bitte sagen, was ich hier falsch mache und wie's richtig sein soll.

Vielen Dank im Voraus

Grüße
Franz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
P.S.:
10.05.2003 22:45:54
Franz W.

Jetzt habe ich grade gesehen, dass er BEIM DER ERSTEN ERFÜLLTEN BEDINGUNG den Kommentar sogar noch reinschreibt!! Aber dann geht's nicht mehr weiter.

Grüße
Franz

Re: AddComment: mal geht's, mal nicht...?
10.05.2003 23:11:27
Michael

Hi Franz,
die Fehlermeldung bedeutet, dass bereits ein Kommentar da ist.
Du musst also dafür sorgen, dass der Kommentar vorher gelöscht wird.

MfG, Michael


100%-iger Volltreffer!
10.05.2003 23:27:26
Franz W.

Hallo Michael,

ganz vielen Dank! Glasklar erkannt, da kann ich nur staunen!!

Vielen Dank und gute Nacht
Franz

Re: AddComment: mal geht's, mal nicht...?
11.05.2003 08:28:17
andre

hallo,

vielleicht hängt es mit dem value-wert der zelle zusammen? das mit dem comment delete war ja schon im originalcode drin - beginn 4 zeilen über dem set ...

gruss andre

Anzeige
Re: AddComment: mal geht's, mal nicht...?
11.05.2003 12:13:08
Franz W.

Hallo Andre,

ich weiß jetzt nicht so genau, ob wir vom selben reden: das "set cmt ..." kommt 2 Mal. Beim ersten Mal hat's geklappt, da gibt's vorher "comment.delete". Beim zweiten Mal - mit einer weiteren Bedingung - hat's nicht mehr geklappt. Und da war dann ja schon ein Kommentar drin, der muss dann wohl zuerst raus, bevor ein neuer rein kann. Auf jeden Fall geht es jetzt mit dem Tipp von Michael problemlos.

(Dass in dem von mir geposteten Code beide Male derselbe Inhalt in den Kommentar soll, war nur zum Testen. Nachdem es nicht geklappt hat, hab ich Verschiedenes rumprobiert; tatsächlich kommt beim zweiten Mal was anderes rein.)

Regnerischen Sonntagsgruß aus München
Franz

Anzeige
Re: AddComment: mal geht's, mal nicht...?
11.05.2003 12:30:52
andre

hallo franz,
stimmt, ich hab im code nicht bis ganz runter geschaut, wusste nicht, das es 2x in code steht.
wenn du es genauso machst wie beim ersten - geht`s dann?

If Not Cells(t + 1, m).Comment Is Nothing Then
Cells(t + 1, m).Comment.Delete
End If

vor das set ... setzen.

gruss andre

Re: AddComment: mal geht's, mal nicht...?
11.05.2003 13:06:42
Franz W.

Hallo Andre,

(sorry, dass meine ANtworten so lange dauern, bin allein mit ein paar Kindern :-))) ... )

Zur Sache: ja, auch mit diesem Konstrukt klappt es beim zweiten Mal. Lasse ich die drei Zeilen aber weg, mault er sofort wieder. Es scheint alles möglich, Hauptsache, vorher wird gelöscht.

Grüße
Franz

Anzeige
Re: AddComment: mal geht's, mal nicht...?
11.05.2003 18:41:22
andre

hallo franz,
bei mir geht's auch nicht immer schnell, die kinder sind zwar schon fast aus dem haus ...

also, eine prüfung auf kommentar brauchst du für deinen bisherigen code. du könntest auch mit einer fehlerbehandlung weiterkommen, prinzipiell etwa so:

on error resume next
Range("A1").AddComment.Visible = False
Range("A1").Comment.Text Text:="wanderer:" & Chr(10) & "willi weber"
on error goto 0 'oder vorherige fehlerbehandlung

gruss andre

2 Fragen dazu...
11.05.2003 19:45:13
Franz W.

Hallo Andre,

find ich toll, dass Du Dich der Sache noch weiter annimmst, obwohl es eine Lösung gibt. Danke dafür. Aber zwei Fragen habe ich dazu:

Zunächst eine zur Sache: ich habe Deinen neuen Vorschlag ausprobiert: Fehlermeldung kommt keine, aber er tut nicht was er soll:

Er setzt nicht "t + 5" als Kommentar ein, sondern "t + 1". Was mache ich da noch falsch? Wohlgemerkt, er ändert einen vorher drin stehenden Kommentar sehr wohl in einen neuen, aber eben nicht in den richtigen!


Zum zweiten eine generelle Frage: ich gestehe ja freimütig, dass der Code nicht in allen Teilen allein auf meinem Mist gewachsen ist. Und dass er ohne Fehlerbehandlung auskommt, rührt einfach daher, dass ich ihn mir mit Eurer wertvollen Hilfe eben so zusammenstellen konnte.
Aber ich lese auch immer wieder, dass man auf Dinge wie "on error resume next", "goto" oder ähnliches nach Möglichkeit verzichten sollte. Stattdessen sollte man sich gefälligst darum bemühen, den Code "sauber auszuprogrammieren". Vielleicht könnte ich da ein bisschen Nachhilfe bekommen. Welche der beiden Varianten ist in dem Beispiel hier vorzuziehen. Und vielleicht ein klitzekleines WARUM dazu.

Vielen Dank schon mal (falls Du noch Lust hast) und Grüße
Franz



Anzeige
Re: 2 Fragen dazu...
11.05.2003 20:19:41
andre

hallo franz,

schreibe den code mal so:

On Error Resume Next
Cells(t + 1, m).AddComment.Visible = False
Cells(t + 1, m).Comment.Text Text:=Chr(10) & Cells(t + 5, m).Value & Chr(10)
On Error GoTo 0

also vorne den range weg, und ein paar klammern weniger.
range(cells...) nimmt man besser nur, wenn man einen bereich mehrerer zellen verwendet, also z.b. range(cells(1,1),cells(2,2)
die ursprüngliche variante hat mir der debugger angemosert.

das mit dem on error ist gut zu gebrauchen, wenn man es gezielt einsetzt. wie im beispiel, wo dadurch das if ... gespart wird, oder wenn man eigene fehlerbehandlungen ansetzt, und wenn es nur eine msgbox ist.
durch on error goto 0 setzt man die fehlerbehandlung wieder aus.
z.b.


Sub Fehlerbehandlung()
On Error GoTo errorhandler 'Sprung zu Fehlerbehandlung
  Worksheets("tabelle11").Activate
On Error GoTo 0  'Rücksetzen der Fehlerbehandlung
  MsgBox "macht das hier Sinn? " & Chr(10) & ActiveSheet.Name
Exit Sub  'Verlassen des Makro

errorhandler:  'Fehlerbehandlung
  MsgBox "Sheet Tabelle11 nicht vorhanden"
Resume Next  'Rückkehr zur nächsten Zeile - nur "Resume" zur gleichen Zeile

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

manche schreiben es allerdings an den anfang, damit das makro durchläuft und sie sich keine weiteren gedanken machen brauchen....

gruss andre

Anzeige
Ha!! Jetzt hab ich's erst kapiert !!!
11.05.2003 20:48:30
Franz W.

Hallo Andre,

diese Antwort werde ich mir erst mal aufheben und noch ein paar mal durchlesen, bis ich sie verinnerlicht habe. Du bietest sozusagen eine "lokale" Fehlerbehandlung an. Soweit hab ich das vorher noch gar nicht durchschaut (und sie darum, wie ich gestehen muss auch gar nicht so ganz richtig/komplett eingesetzt... *schäm*). Bin auch wie "manche" davon ausgegangen, dass es oben rein soll, und das hat mir nach allem, was ich sonst so gelesen/gehört habe, eben widerstrebt. Aber so ...! Das bietet ja ganz neue Möglichkeiten!

Übrigens das Ganze ohne Range war auch bei mir die Lösung :-)).

Ganz vielen Dank für Deine Mühe und einen schönen Abend noch
Franz


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige