AW: Mehrspaltiger Kommentar aus Zelle
27.01.2014 10:15:18
Bastian
Hallo Werner,
natürlich kann man den Kommentar auch immer in die selbe Zelle schreiben. Ich habe den Code entsprechend angepasst.
Der Befehl
With Sheets("Blatt2").Cells(1, 1)
legt fest, in welche Zelle der Kommentar geschriben wird. Also in Blatt2, Zelle "A1". Wenn Du eine andere Zelle haben möchtest, musst Du den Teil Cells(1, 1) anpassen. Die erste Zahl steht für die Zeile und die Zweite Zahl für die Spalte.
Ich habe den Code mal mit ein paar Kommentaren versehen. So kannst Du nachvollziehen, was die einzelnen Befehle bewirken. So fällt Dir das Anpassen des Codes sicher leichter.
Gruß, Bastian
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Makro startet nur, wenn Zelle im Bereich "B5:E12" geändert wird
If Intersect(Target, Range("B:E")) Is Nothing Then Exit Sub
If Intersect(Target, Range("5:12")) Is Nothing Then Exit Sub
'Variablendeklaration
Dim s$, i%, j% 'Variable s ist vom Typ String ($), i und j sind vom Typ Integer (%)
Dim varBereich As Variant
'Bereich in Array einlesen
varBereich = Range("B5:E12")
'Schleife über die Zeilen des Bereichs
For i = 1 To UBound(varBereich, 1)
'Innere Schleife über die Spalten des Bereichs
For j = 1 To UBound(varBereich, 2)
If Not IsEmpty(varBereich(i, j)) Then 'Leere Zellen werden nicht berücksichtigt
s = s & varBereich(i, j) & "," 'Zellinhalt in Variable s schreiben. Werte _
durch Komma trennen.
End If
Next j
s = Left(s, Len(s) - 1) & vbLf 'letztes Komma löschen und Zeilenumbruch einfügen
Next i
On Error Resume Next ' Fehler ignorieren. Bei Fehler mit nächstem Befehl fortfahren. ( _
ist das so gewollt?)
With Sheets("Blatt2").Cells(1, 1) 'Hier Zelle anpassen, in der der Kommentar stehen soll
.Comment.Delete 'Bestehenden Kommentar löschen
If s = "" Then Exit Sub 'Falls s leer ist, Makro verlassen
.AddComment 'Kommentar hinzufügen
.Comment.Text Text:=s 'Text "s" in den Kommentar schreiben
.Comment.Shape.TextFrame.AutoSize = True 'Größe des Kommentars automatisch anpassen
End With
End Sub