Hinzufügen von dynamischen Kommentaren zu Excel-Zellen über VBA

364
James

Ich versuche, Kommentare zu verwenden, um das aktuelle Fälligkeitsdatum einer Aufgabe über ein VBA-Makro anzuzeigen. Meine aktuelle Lösung sieht so aus:

Sub AddDueDates() Dim strPrefix As String strPrefix = "" With Range("Target") If .Comment Is Nothing Then .AddComment End If .Comment.Visible = True .Comment.Shape.TextFrame.AutoSize = True End With  With Range("Target").Comment .Text strPrefix & Range("Source").Text  End With End Sub 

Mir ist schrecklich bewusst, dass es sich hier wahrscheinlich um schlampigen Code handelt, aber ich fange gerade erst wieder an.

Die Lösung funktioniert bisher für eine einzelne Zelle gut. Ich habe die Zellen vorher "Ziel" und "Quelle" genannt, anstatt Zellreferenzen wie "B12" zu verwenden. Nun möchte ich das auf mehrere Zellen erweitern, abhängig von dem Bereich, den ich vorher auswähle (zB A1: A6).

Die Auswahl, in der Kommentare hinzugefügt werden, entspricht einem Bereich gleicher Größe in einem anderen Arbeitsblatt.

Ich habe das Gefühl, dass eine Schleife hilfreich sein wird, aber ich weiß nicht, wo ich anfangen soll.

Das Bild unten zeigt vielleicht, was ich machen möchte. Die Quelle ist mit dynamischen Daten gefüllt, die ich meinen Kommentaren hinzufügen möchte

https://i.stack.imgur.com/EsfEa.jpg

Danke im Voraus

0
Sie müssen nur nachsehen, wie Sie einen Bereich erstellen und ihn Zelle für Zelle durchlaufen. BruceWayne vor 5 Jahren 0
danke batman :) Würden Sie mir bitte einen Tipp geben, wo ich anfangen soll? James vor 5 Jahren 0

1 Antwort auf die Frage

0
BruceWayne

Damit sollten Sie anfangen. Dies funktioniert mit Ihrem Beispielfoto - muss jedoch angepasst werden, wenn die Kommentarquelle ein anderes Arbeitsblatt ist.

Sub AddDates() Dim targetRng As Range, commentSrcRng As Range Dim strPrefix As String ' why this variable? You never seem to use it  Set targetRng = Application.InputBox("Please select the target range. This is the range that will have comments added to each cell", Type:=8) Set commentSrcRng = targetRng.Offset(0, 3) ' from the screenshot. Will have to tweak if this is a different worksheet.  Dim cel As Range Dim i As Long i = 1 For Each cel In targetRng If cel.Comment Is Nothing Then cel.AddComment End If cel.Comment.Visible = True cel.Comment.Shape.TextFrame.AutoSize = True cel.Comment.Text strPrefix & commentSrcRng.Cells(i) i = i + 1 Next cel  End Sub 

enter image description here

Vielen Dank, Batman! :) Ich wusste, du kennst dich nicht nur in Gotham aus! Ich werde es versuchen! James vor 5 Jahren 0
Ich habe gerade diese Momente ausprobiert und es funktioniert wunderbar, aber wie Sie bereits vorausgesehen haben, brauche ich die Kommentarquelle aus einem anderen Arbeitsblatt. Ich werde das untersuchen, seit ich weiß, dass es etwas mit TargetRng zu tun hat, aber wenn Sie mir wieder Hinweise geben könnten - heiliger VBA-Batman! :-) James vor 5 Jahren 0
@James Wo auf dem zweiten Arbeitsblatt sind die Kommentare, wie würden Sie sie finden? BruceWayne vor 5 Jahren 0
Ich habe Ihren Code mit commentSrcRng = Application.InputBox geändert ("Bitte wählen Sie den Quellbereich. Dies ist der Bereich, der die Quelle der Kommentare enthalten wird", Typ: = 8). James vor 5 Jahren 0
Ich denke, ich bin mit dem derzeitigen Ansatz relativ zufrieden. Vielen Dank! - Wie auch immer, ich möchte ein anderes Makro implementieren, das die angehängten Kommentare aktualisiert, um die letzten Änderungen widerzuspiegeln James vor 5 Jahren 0