VBA-Script - Kommentartext finden und Zelle durch bedingte Formatierung einfärben?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Wie ich das sehe, beschränkt sich das Problem darauf, dass man mit Excelfunktionen schwer an die Kommentare heran kommen kann.

Hierfür würde ich einfach deiner persönlichen Makrosammlung eine Funktion hinzufügen, die den Kommentar auslesen kann. Beispiel:

Function Kommentar(Optional rZelle As Range)
  Kommentar = ""
  If rZelle Is Nothing Then _
    Set rZelle = Application.Caller
  If Not rZelle.Comment Is Nothing Then _
    Kommentar = rZelle.Comment.Text
End Function

Als nächstes muss nur noch eine bedingte Formatierung festgelegt werden. Wenn das Suchwort in A1 steht und die Kommentare in den Zellen darunter: 

=UND(Kommentar()<>"";ISTZAHL(FINDEN($A$1;Kommentar())))

Schauen wir erst mal, ob ich Dich bis hierher richtig verstanden habe.
Es wird erstmal nur nach dem Kommentar gesucht und eine Messagebox: "formatieren" ausgegeben.
Wenn DAS so bei Dir klappt, kümmern wir uns danach ums formatieren.
Dazu würde ich vorschlagen die Zelle direkt zu formatieren, also nicht über Bedingte Formatierung, aber dafür das Makro als eine Ereignis-Makro laufen zu lassen:(

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

), das nur aufgerufen wird, wenn sich der Wert in XY ändert.

Aber hier erstmal der Code mit der MsgBox:

Sub Kommentare()
Dim Text As String
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("B1:B20") 'ANPASSEN Suchbereich
Dim Quelle As Range
Set Quelle = Range("A1") 'ANPASSEN Deine Zelle XY

For Each Zelle In Bereich
On Error Resume Next
Text = Zelle.Comment.Text
On Error GoTo 0
If Text = Quelle.Value Then
MsgBox Zelle.Address & ": formatieren"
End If
Text = ""
Next Zelle
End Sub
Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

DavidK 
Beitragsersteller
 16.05.2016, 20:01

...die Antwort darunter kannst du ignorieren bzw. nicht ganz. Die diversen MsgBoxen kamen natürlich dadurch zustande, dass ich den zu prüfenden Zellinhalt gelöscht habe. Und die Mappe hatte natürlich viele leere Zellen. Sowas sollte dann natürlich vermieden werden.

0
DavidK 
Beitragsersteller
 16.05.2016, 21:27

Die Anwort habe ich löschen lassen, weil ich da Unsinn geschrieben habe. Aber ich habe unendlich viel MsgBoxen bekommen. ;) Sobald was in der Zelle steht, findet er auch die richtigen zellen im Suchbereich. Wenn die jetzt alle eingefärbt werden würden, hätte ich meine Lösung!

0
Oubyi, UserMod Light  16.05.2016, 23:17
@DavidK

Was hältst Du dann von meinem Vorschlag für eine feste Formatierung und ein Ereignismakro.
Weißt Du, wie das funktioniert?
Zum Beispiel mit diesem Code im Modul des Tabellenblattes (Rechtsklick auf den Tabellenreiter (unten, da wo z.B. Tabelle1 steht) und dann auf "Code anzeigen...")

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
'"A1" anpassen für Dein XY
Dim Text As String
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("B1:B20") 'ANPASSEN Suchbereich

For Each Zelle In Bereich
On Error Resume Next
Text = Zelle.Comment.Text
On Error GoTo 0
If Text = Target.Value Then
Zelle.Interior.ColorIndex = 4
Else: Zelle.Interior.ColorIndex = xlNone
End If
Text = ""
Next Zelle
End If
End Sub
1
Iamiam  16.05.2016, 23:27
@DavidK

Falls Oubyi heut nicht mehr reinschaut:

anstatt der MSBbox den Befehl:

Zelle.Interior.Color = RGB(0, 255, 255): Zelle.Font.Color = RGB(192, 0, 192)

Farben natürlich nach Deiner Wahl, die Befehle für ggf. Rahmenlinien-Arten und -Stärken, Schriftarten und Schriftgrößen musst Du Dir selbst suchen, am besten durch Aufzeichnen mit dem µ-Recorder.

(Der : macht aus 2 Zeilen eine)

3
DavidK 
Beitragsersteller
 17.05.2016, 08:50
@Iamiam

Vieen Dank, das habe ich gesucht! ;)

0

formal zur Ermöglichung einer Hilfreichsten.