Ich habe den folgenden Code ein, der bis zum Ende des MsgBox funktioniert gut:VBA Fehler 91 nach korrekter Ausführung mit für jede Schleife und Zell kommentiert
Sub CommentsAsFootnotes(myTemplate As Variant, ByRef footnotespage1 As String, ByRef footnotespage2 As String)
Dim rngTemp As Range
Dim rngComment As Range
Dim footnote As String
Dim i As Integer
On Error Resume Next
Set rngComment = myTemplate.Sheets("Seite 1 ").Range("B14:T35").SpecialCells(xlCellTypeComments)
On Error GoTo 0
i = 1
'If rngComment is Nothing
'Exit Sub
'End If
For Each rngTemp In rngComment
rngTemp.value = rngTemp.value & CStr(i)
rngTemp.Characters(Start:=Len(rngTemp.value), Length:=1).Font.Superscript = True
MsgBox rngTemp.Comment.Text
' error thrown here
Next rngTemp
footnotespage1 = footnote
End Sub
Das Meldungsfeld wird angezeigt mit dem richtigen Inhalt. Wenn ich jedoch auf "OK" klicke, wird ein Fehler ausgelöst "Fehler 91, Objektvariable oder mit Blockvariable nicht gesetzt" und der Debugger markiert die Zeile mit dem Meldungsfeld.
Haben Sie eine Idee, was diesen Fehler verursachen könnte?
Sein für mich funktioniert, gibt es ein anderen Inhalte Sie können hinzufügen, dass das helfen könnte? –
Als Antwort auf Shais richtige Umgehung für diese Antwort: Der Grund dafür basiert auf "fusionierten Zellen". Wenn Sie einen Kommentar zu einer verbundenen Zelle haben, erhalten Sie mit "SpecialCells (xlCellTypeComments)" einen Bereich, der alle Zellen enthält, die in dieser verbundenen Zelle enthalten sind, aber nur einer von ihnen enthält einen Kommentar. Es ist also generell eine gute Idee, die von Shai vorgeschlagene Reichweite zu verdoppeln. – derMax