Anzeige
Archiv - Navigation
1864to1868
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
Inhaltsverzeichnis

VBA Wörter farbig makieren

VBA Wörter farbig makieren
20.01.2022 08:22:49
Verena
Hallo zusammen,
ich habe eine Frage zu VBA und zwar möchte ich alle Wörter die mit Auftragsnummer und Reklamation in allen Tabellenblättern farblich markieren.
Ich schreibe in Spalte F einen kurzen Text...Heute waren wir beim Kunden xy für die Auftragsnummer(1234). Anschließend verlasse ich die Zelle und die Auftragsnummer + das was in den Klammern steht soll farblich markiert werden.
Wie bekomme ich es hin das ich die Auftragsnummer(1234) in eine andere Farbe hervorheben kann. Ich habe es geschafft das er mir zumindest die Auftragsnummer farbig markiert aber nicht die Nummer in den Klammern dahinter, da die Auftragsnummer ja immer unterschiedlich sein kann. (wobei das auch nicht mehr funktioniert nachdem ich einiges ausprobiert habe^^)
Ich hoffe ihr konntet verstehen was ich meine...
Danke schon einmal für die Hilfe!
LG Verena

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wörter farbig makieren
20.01.2022 08:46:30
volti
Hallo Verena,
hier eine Anregung, wie nach einer Eingabe die Zeichen (Zahlen) in Klammern in farbiger Schrift gesetzt werden können.
Code:

[Cc]

Private Sub Worksheet_Change(ByVal Target As Range) Dim P1 As Integer, P2 As Integer With Target P1 = InStr(.Value, "(") If P1 > 0 Then P2 = InStr(P1 + 1, .Value, ")") ' Jetzt formatieren If P2 > P1 Then With .Characters(Start:=P1 + 1, Length:=(P2 - P1 - 1)) .Font.Color = RGB(255, 0, 0) End With End If End If End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: VBA Wörter farbig makieren
20.01.2022 09:28:43
Verena
Erst einmal danke für das Feedback. Das würde aber nur funktionieren, wenn in den Klammern eine Zahl steht verstehe ich doch richtig, oder?
Die Eingabe hinter der Klammer (also in den Klammern) ist variabel, könnte also auch mal ein Hinweis oder ähnlich stehen.Beispiel: Auftragsnummer(N17275-alt).Würde das dann auch so funktionieren? Integer prüft ja nur Zahlen und sonst nicht oder?
AW: VBA Wörter farbig makieren
20.01.2022 09:37:06
volti
Hallo Verena,
hast Du es denn schon ausprobiert?
Hier wird alles, was in der Klammer steht, entsprechend farbig ausgegeben, wie kommst Du darauf, dass es nur Zahlen wären?
PS: Bei diesem einfachen Code wird auch nur die erste oder einzige Klammer behandelt. Sollte mehrere Klammern vorhanden sein, muss ein anderer Code erstellt werden.
Gruß
Karl-Heinz
Anzeige
AW: VBA Wörter farbig makieren
20.01.2022 10:30:22
Verena
Ja gerade danke. Bevor ich die Nachricht geschickt hatte, hatte ich es noch nicht ausprobiert gehabt.
Ich hatte einen Denkfehler, Ich habe gedacht das Integer nur für Zahlen wäre aber dann mal danach recherchiert. Ich versuche den Code jetzt einmal so umzubauen das ich das Ergebnis so rausbekomme, das Auftrag und Reklamation mit Klammer mit markiert werden. Bin noch am Anfang mit VBA und probiere gerade einige Dinge aus, gehe jetzt erst einmal Zeile für Zeile deinen Code durch und versuche diesen zu verstehen mit Hilfe von Google^^ Bei Nachfragen melde ich..
Danke schon einmal!
AW: VBA Wörter farbig makieren
20.01.2022 09:37:26
Oberschlumpf
Na Verena
du bist auch ziemlich sparsam mit deinen Infos.
Kannst du uns bitte per Upload eine Bsp-Datei mit - mehreren, unterschiedlichen - Bsp-Daten zeigen?
Am besten links die Daten, wie sie jetzt aussehen; rechts eine Tabelle mit den Daten so farblich geändert, wie du dir das Ergebnis vorstellst.
Danke + Ciao
Thorsten
Anzeige
AW: VBA Wörter farbig makieren
20.01.2022 10:03:13
Verena
Okay das dachte ich mir schon, sorry^^
https://www.herber.de/bbs/user/150532.xlsm
Hier eine Beispieldatei...Ich möchte das der Text die Spalte F wo ich z.B. Auftrag (Nr.1234) und Reklamation(Nr.1234) farbig markieren. Aber nur Auftrag & Reklamation in Verbindung mit den beiden Klammern. Da eventuell noch andere Informationen dazu kommen würden.
AW: VBA Wörter farbig makieren
20.01.2022 10:11:32
Oberschlumpf
hmm...sooo...und jetzt bitte noch in Bsp-Datei die farbige Ergebnistabelle, wie du es haben willst....sorry, deine Erklärversuche in nur sprachlicher Form versteh zumindest ich noch immer nich
Anzeige
update..
20.01.2022 10:51:24
UweD

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, Arr, ArrCol
Dim P1 As Integer, P2 As Integer
Arr = Array("Auftrag(", "Reklamation(") ' zu betrachtende Elemente
ArrCol = Array(RGB(255, 0, 0), RGB(0, 255, 0)) ' die jeweilige Farbe
If Not Intersect(Target, Columns(6)) Is Nothing Then ' Nur Änderungen in Spalte F
'reset
Target.Font.ColorIndex = xlAutomatic
For i = LBound(Arr) To UBound(Arr)
P1 = InStr(Target, Arr(i))
If P1 > 0 Then
P2 = InStr(P1 + 1, Target, ")") + 1
Target.Characters(Start:=P1, Length:=(P2 - P1)).Font.Color = ArrCol(i)
End If
Next
End If
End Sub
LG UweD
Anzeige
und noch eine Anpassung
20.01.2022 11:19:17
UweD
- Die Farbe Grün geändert
- und die Klammern weggelassen [dann klappt auch Auftragsnummer...]
Ändere diese Zeilen

Arr = Array("Auftrag", "Reklamation") ' zu betrachtende Elemente
ArrCol = Array(RGB(255, 0, 0), RGB(0, 176, 80)) ' die jeweilige Farbe
LG UweD
AW: und noch eine Anpassung
20.01.2022 12:06:53
Verena
Super!
Über das Dim P1 As Integer, P2 As Integer und dem Arr = Array lege ich ja die Variablen fest richtig? Ich hab das ganze versucht jetzt noch um Rechnung zu erweitern leider klappt das mit der IF Anweisung nicht so ganz. Diese muss ich dafür ja anpassen oder?
AW: und noch eine Anpassung
20.01.2022 12:52:47
UweD
so...
Die beiden Arrays kannst du durch "Komma" erweitern
Parallel zum Suchwort immer einen passenden Farbwert ergänzen (kann auch der Selbe sein)
Es sollten also immer gleich viele Elemente in den beiden Arrays sein
Das Array Arr wird dann so oft durchlaufen, wie Einträge da sind.
P1 und P2 sind je nach Eintrag immer Anfang und Endpunkt der Färbung

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, Arr, ArrCol
Dim P1 As Integer, P2 As Integer
Arr = Array("Auftrag", "Reklamation", "Rechnung") ' zu betrachtende Elemente
ArrCol = Array(RGB(255, 0, 0), RGB(0, 176, 80), RGB(0, 0, 255)) ' die jeweilige Farbe
If Not Intersect(Target, Columns(6)) Is Nothing Then ' Nur Änderungen in Spalte F
'reset
Target.Font.ColorIndex = xlAutomatic
For i = LBound(Arr) To UBound(Arr)
P1 = InStr(Target, Arr(i))
If P1 > 0 Then
P2 = InStr(P1 + 1, Target, ")") + 1
Target.Characters(Start:=P1, Length:=(P2 - P1)).Font.Color = ArrCol(i)
End If
Next
End If
End Sub
LG UweD
Anzeige
AW: und noch eine Anpassung
20.01.2022 13:05:02
Verena
Ah, danke für die Erklärung, jetzt hab ich es verstanden!
Danke für die Rückmeldung (owT)
21.01.2022 09:05:51
UweD
AW: VBA Wörter farbig makieren
20.01.2022 11:07:51
Oberschlumpf
Hi Verena
hier, versuch mal:
https://www.herber.de/bbs/user/150536.xlsm
Hier ist es zwar egal, ob "Auftrag" oder "Reklamtion" als einzelnes Wort oder Wortteil enthalten ist, aber! beide Wörter müssen enthalten sein.
Hilfts?
Beachte die Hinweise in der Datei.
Ciao
Thorsten
AW: VBA Wörter farbig makieren
20.01.2022 12:43:25
Verena
Wollte die Abfrage jetzt noch um ein Wort ergänzen z.B Test:
ReDim Preserve lariStopp(UBound(lariStopp) - 1)
For liIdx = 0 To UBound(lariStopp)
If liIdx = 0 Then
For liChar = lariStopp(0) To 1 Step -1
If Mid(zelle.Value, liChar, 7) = "Auftrag" Then
zelle.Characters(liChar, lariStopp(0) - liChar + 1).Font.Color = RGB(255, 0, 0)
End If
Next
End If
If liIdx = 1 Then
For liChar = lariStopp(1) To 1 Step -1
If Mid(zelle.Value, liChar, 11) = "Reklamation" Then
zelle.Characters(liChar, lariStopp(0) - liChar + 1).Font.Color = RGB(0, 176, 80)
End If
Next
End If
Next
If liIdx = 2 Then
For liChar = lariStopp(1) To 1 Step -1
If Mid(zelle.Value, liChar, 11) = "Test" Then
zelle.Characters(liChar, lariStopp(0) - liChar + 1).Font.Color = RGB(0, 176, 80)
End If
Next
End If
End Sub
Wäre das dann so richtig?
Anzeige
AW: VBA Wörter farbig makieren
20.01.2022 10:44:49
UweD
Hallo
Dazu musstest du aber genau die Bezeichnungen einhalten
Also Auftrag( und nicht Auftragsnummer ( etc.
- in den Codebereich der Tabelle kopieren

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, Arr
Dim P1 As Integer, P2 As Integer
Arr = Array("Auftrag(", "Reklamation(") ' zu betrachtende Elemente
If Not Intersect(Target, Columns(6)) Is Nothing Then ' Nur Änderungen in Spalte F
'reset
Target.Font.ColorIndex = xlAutomatic
For i = LBound(Arr) To UBound(Arr)
P1 = InStr(Target, Arr(i))
If P1 > 0 Then
P1 = P1 + Len(Arr(i))
P2 = InStr(P1 + 1, Target, ")")
Target.Characters(Start:=P1, Length:=(P2 - P1)).Font.Color = RGB(255, 0, 0)
End If
Next
End If
End Sub
LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige