Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Text nach Hochkomma in Farbe

VBA: Text nach Hochkomma in Farbe
28.03.2017 18:06:34
Dieter(Drummer)
Guten Tag Spezialisten,
gibt es eine Lösung für:
1. Im aktiven Tabellenblatt ist viel Text in unterschiedlichen Zellen
2. In den Texten gibt es ein Hochkomma, mal am Anfang, mal innerhalb des Textes
3. Der Text, der dem Hochkomma folgt, soll inkl. des Hochkommas in Farbe.
Bin bei Recherche leider nicht fündig geworden.
Wäre toll, wenn es da eine VBA Lösung gäbe.
Gruß, Dieter(Drummer)

32
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Text nach Hochkomma in Farbe
28.03.2017 18:12:19
Daniel
Hi
dann hast du nicht gründlich recherchiert.
die Frage, wie man Texte teilweise per VBA einfärbt, kommt öfters mal.
ansonsten, wenn man nicht weiß wie es programmiert wird, hilft oft der Recorder weiter.
dh einfach eine Zelle nehmen, dort einen Teiltext einfärben und das ganze mit dem Recorder aufzeichen. Dann schaust du dir den aufgezeichneten Code im Editor an und siehst wie es programmiert wird.
Mit ein paar VBA Grundkenntnissen ist das dann nicht so schwer.
Gruß Daniel
AW: Danke für Info, Daniel ...
28.03.2017 18:14:01
Dieter(Drummer)
... werde das ausprobieren.
Gruß, Dieter(Drummer)
AW: VBA: Text nach Hochkomma in Farbe
28.03.2017 18:19:01
Hajo_Zi
Hallo Dieter,
mal ohne Fehlerbehandlung.
Option Explicit
Sub Rot()
Range("C22").Characters(Start:=InStr(Range("C22"), "'"), _
Length:=InStrRev(Range("C22"), "'") - InStr(Range("C22"), "'") + 1).Font.Color = 255
End Sub


Anzeige
AW: Danke Hajo, aber ...
28.03.2017 18:33:04
Deter(Drummer)
... es wird nur das Hochkomma rot. Es sollte aber auch der Texzt danach und in der ganzen Tabelle gesucht und gefärbt werden, nicht nur in einer Zelle.
Dennoch, Danke.
Gruß, Dieter(Drummer)
AW: Danke Hajo, aber ...
28.03.2017 18:36:14
Hajo_Zi
Hallo Dieter,
ich habe diese Aussage
3. Der Text, der dem Hochkomma folgt, soll inkl. des Hochkommas in Farbe.

als in einer Zelle interpretiert, also das beide in einer Zelle sind.
Das habe ich dann wohl falsch interpretiert und bin darum raus.
In meiner Datei geht es.
Gruß Hajo
Anzeige
AW: Dennoch Danke Hajo. owT
28.03.2017 18:41:00
Deter(Drummer)
Hast du nicht, Hajo, denn du hast unnötigerweise …
28.03.2017 19:56:13
Luc:-?
…die Länge des einzufärbenden Textes berechnet. Wenn in dem nur ein Apostroph vorkommt, wird auch genau nur dieses gefärbt. Aus Dieters AW ist zu schließen, dass das auch genauso ist!
Hallo, Dieter;
lass' einfach nur das 2.Argument der vbFkt Characters weg, dann sollte es auch klappen. Nur für ein Apostroph am Textanfang sehe ich schwarz, falls es nicht doppelt notiert wurde oder als Text­Präfix ein anderes Zeichen vereinbart wurde.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Danke Luc :-? für Hinweis, aber ...
29.03.2017 08:49:17
Dieter(Drummer)
... da fehlt mir das Wissen, dies umzusetzen. Es kommt noch dazu, dass Hajos Code sich auch nur auf eine Zelle (C22) bezieht, es soll sich ja auf jede Zelle in dem Sheet beziehen.
Sorry für späte Rückmeldung. Ich werde weiter im Netz suchen.
Gruß, Dieter(Drummer)
AW: Aus dem Netzt, aber ohne Färbung ...
29.03.2017 09:08:10
Dieter(Drummer)
... diesen Code habe ich im Netzt gefunden, der aber nur die Zelle angibt, in MsgBox, in der das Hochkomma ist. Statt Msgbox fehlt mir also nur die Färbung des Textes, der NACH dem Hochkomma folgt. Dies gilt für die ganze Tabelle und nicht nur für eine Zelle.
Wäre schön, wenn es da Hilfe gibt.
Gruß, Dieter(Drummer)
'http://www.excel-inside.de/vba-loesungen/text/311-zellen-mit-hochkomma-per-vba-ermitteln
 Public Sub hochkomma_per_vba_ermitteln()
'Im markierten Bereich werden alle Zellen mit Hochkomma ermittelt
'und die Zelladresse in einer MsgBox ausgegeben
Dim zelle As Range
For Each zelle In Selection
If zelle.PrefixCharacter = "'" Then
MsgBox zelle.Address
End If
Next zelle
End Sub

Anzeige
AW: Aus dem Netzt, aber ohne Färbung ...
29.03.2017 10:53:45
hary
Moin Dieter
Wie Luc schrieb, wird es nix wenn das Hochkomma am Anfang steht.
Probier mal:
Dim Zelle As Range
For Each Zelle In Selection
If InStr(1, Zelle, "'") Then
Zelle.Characters(InStr(1, Zelle, "'"), 9 ^ 9).Font.Color = vbRed
End If
Next

gruss hary
AW: besser so
29.03.2017 11:31:56
hary
Moin nochmal
Mit PrefixCharacter geht es auch an erster Stelle.
Dim Zelle As Range
For Each Zelle In Selection
If Zelle.PrefixCharacter = "'" Or InStr(1, Zelle, "'") Then
Zelle.Characters(InStr(1, Zelle, "'"), 9 ^ 9).Font.Color = vbRed
End If
Next

gruss hary
Anzeige
AW: Einfach perfekt ...
29.03.2017 12:08:18
Dieter(Drummer)
Hallo Harry,
dein Code ist für alle von mir gewünschten Varianten perfekt und funbktioniert!
Herzlichen Dank und noch einen schönen Tag.
Gruß, Dieter(Drummer)
AW: Für jeden, den es interessiert, habe ich ...
29.03.2017 12:23:35
Dieter(Drummer)
... dem Code von hat Harry etwas dazu eingesetzt:
Sub HochkommaTextFarbe()
Dim Zelle As Range
ActiveSheet.UsedRange.Select
For Each Zelle In Selection
If InStr(1, Zelle, "'") Then
Zelle.Characters(InStr(1, Zelle, "'"), 9 ^ 9).Font.Color = vbRed
End If
Next
Range("A1").Select
End Sub

Gruß, Dieter(Drummer)
AW: ohne select
29.03.2017 12:33:09
hary
Moin Dieter
Mach es ohne select.

For Each Zelle In ActiveSheet.UsedRange

gruss hary
Anzeige
AW: Danke Harry, klappt prima ...
29.03.2017 12:51:49
Dieter(Drummer)
... Gruß, Dieter(Drummer)
Wenn du ein führendes ' nicht verdoppeln, ...
29.03.2017 15:21:05
Luc:-?
…aber trotzdem als Auslöser der RotFärbung verwenden willst, Dieter,
würde Harys Code das nicht leisten, denn die vbFkt Instr würde dieses ' ignorieren, falls es, wie standard­mäßig üblich, als Text­Präfix fungiert. Richtig wäre dann das Folgende:
    Dim Zelle As Range
For Each Zelle In ActiveSheet.UsedRange
If Zelle.PrefixCharacter = "'" Then
Zelle.Font.Color = vbRed
ElseIf InStr(1, Zelle, "'") Then
Zelle.Characters(InStr(1, Zelle, "'")).Font.Color = vbRed
End If
Next Zelle
Hier habe ich auch meine Empfehlung umgesetzt und das in deinem Fall über­flüssige 2.Argument der vbFkt Characters weg­ge­las­sen. Harys 9 ^ 9 als maximale Längen­angabe ist eben­falls über­flüssig, da dieses (2.) Argument ohne­hin Optional ist.
Ich würde allerdings nicht empfehlen, das TextPräfix derart einzusetzen, denn …
1. wird es nicht angezeigt und …
2. neigt Xl dazu, es, 1× angewendet, zumindest in diesen Zellen, jedem Text voranzustellen.
Es ist also nicht wirklich kontrollierbar und somit kann uU jeder Text in Gänze rot wdn. Dann wäre es wohl besser, ein anderes Zeichen als TextPräfix einzustellen, wodurch die 1. If-Bedingung dann auch ent­fallen könnte.
Gruß, Luc :-?
Anzeige
AW: Wenn du ein führendes ' nicht verdoppeln, ...
29.03.2017 16:28:18
Dieter(Drummer)
Herzlichen Dank Luc :-?,
für dein Makro und dein Erklärungen dazu.
Mit ging es ja nicht um doppelte Hochkommatas, somit realisiert das Makro von Hary meine Vorstellungen.
Es stimmt, dass Harys Code, ohne "9 ^ 9", auch entsprechend funktioniert.
Das Hochkomma kommt aus den Kopien von Codes in ein Tabellenblatt und ich mach damit Eräuterungen der Codes besser kenntlich.
Dein Code färbt auch Anführungszeichen (") und das macht er perfekt, aber die sollen nicht gefärbt werden.
Dennoch Dank für deinen Code und Infos.
Gruß und einen schöne Abend,
Dieter(Drummer)
Mein Code färbt ebensowenig wie der von ...
29.03.2017 19:43:20
...
…Hary Standard-US-An-/Ausführungszeichen, Dieter,
denn die haben einen anderen Code. Du solltest zwischen doppeltem ' (→ '' = 2 Zeichen!) und " (→ nur ein Zeichen!) unterscheiden (können)…
Luc :-?
Anzeige
AW: Sorry, aber da komme ...
29.03.2017 20:10:00
Dieter(Drummer)
Hallo Luc :-?,
... ich nicht weiter. Da fehlt mir einfach das Wissen.
Gruß, Dieter(Drummer)
Was muss man da mehr wissen als dass es ...
30.03.2017 00:23:58
Luc:-?
…sich um 2 verschiedene Zeichen handelt, Dieter?
A1: " → =CODE(A1) ⇒ 34 (US-An-/Ausführungszeichen)
A2: '' → =CODE(A2) ⇒ 39 (Apostroph=„Hochkomma“, 1. ignoriert, weil hier TextPräfix)
Luc :-?
..verstehst Du mich jetzt ? owT- Gruß
30.03.2017 06:51:12
robert
Doch schon immer, ...
30.03.2017 12:26:34
Luc:-?
…robert,
aber ich sehe das halt lockerer, weil ich einen Bekannten habe, der auch Jahre gebraucht hatte, um sich auf einem ihm fremden Gebiet zurecht­zu­finden. Nebenbei hat ihn das auch ganz schön Geld gekostet, da er meist Profi-Hilfe in Anspruch nahm. Aber davon hat(te) er ja reichlich.
Mich ärgern eher ganz andere Leute, nämlich beratungsresistente Choleriker, die auf ihren fehler­haften, wenn nicht gar kruden Vor­stellungen beharren u/o beim kleinsten Anlass ausrasten. Und dazu gehört Dieter ganz bestimmt nicht! Da er beharr­lich zu sein scheint, wird er's sicher irgend­wann schaffen, die nötige Mindest­Sicher­heit zu erreichen. Hajo soll ja auch mal so ange­fangen haben und hat sich doch Jahre später mit Dingen befasst, an denen sich die Wenigsten versucht haben. Allerdings ist er auch jünger als wir drei…
Gruß, Luc :-?
Anzeige
AW: Herzlichen Dank für deine ...
30.03.2017 12:48:13
Dieter(Drummer)
... Ausführungen, Luc :-?.
r. kann halt nicht anders!
Ich versuche, soweit es mir möglich ist, mich in den Bereichen zurecht zu finden. Es fällt mir nicht so leicht wie manch anderen, aber es ist ja bekanntlich noch kein Meister vom Himmel gefallen.
Danke nochmal für deine Geduld ...
Gruß, Dieter(Drummer)
Bitte sehr, viel Erfolg! owT
30.03.2017 12:50:57
Luc:-?
:-?
Aber du solltest auch ...
30.03.2017 13:07:30
Luc:-?
…robert verstehen, Dieter,
denn der hat sich seine Kenntnisse, genau wie ich, selbst erarbeitet, ohne damals viel fragen zu können. Was meinst du wie oft ich Ende der 90er MS und VBA verflucht habe, weil ich Eleganteres und Einheit­licheres gewohnt war…
Naja, da kann eine gewisse plan-und hilflose Vielfragerei schon mal nerven… ;-)
Vertragt oder toleriert euch wenigstens! Und nicht mimosig wdn, wenn mal berechtigte Kritik kommt! ;-]
Luc :-?
AW: Berechtigte Kritik ...
30.03.2017 14:02:33
Dieter(Drummer)
... kann ich vertragen, Luc :-?.
Persönliche Angriffe und Unverschämtheiten und NUR Kritiken, dafür habe ich kein Verständnis.
Ich nutze Excel/VBA als Hobby, weil es mir einfach Spaß macht und mich einfach interessiert. Ein Spezialist, wie sie hier im Forum sind, kann ich wohl in meinem restlichen Leben nicht mehr werden. Dennoch bleibe ich unermüdlich am Ball und Frage weiter, weiter und weiter ...
Mein Dank geht an alle, die mir bisher geholfen haben, mir weiter helfen und mich dabei nicht beleidigen!
Gruß, Dieter(Drummer)
Na, dann... ;-) owT
03.04.2017 23:46:48
Luc:-?
:-?
AW: Danke Luc :-?, werde mich ...
30.03.2017 08:22:51
Dieter(Drummer)
... damit befassen.
Gruß, Dieter(Drummer)
AW: Danke Luc :-?, für deine ...
30.03.2017 08:42:04
Dieter(Drummer)
... Geduld und Code mit Infos.
Ich habe jetzt den Code getestet und er nimmt nur das "'", ohne die doppelten Anführungszeichen.
Sorry für mein verzögertes Verständnis deiner Infos.
Hier jetzt der Code, von dir:
Sub HochkommaTextFarbe() 'Mx: OK! Herber: Von Luc :-? 30.03.2017
Dim Zelle As Range
For Each Zelle In ActiveSheet.UsedRange
If InStr(1, Zelle, "'") Then
Zelle.Characters(InStr(1, Zelle, "'")).Font.Color = vbRed
End If
Next Zelle
End Sub

Gruß, Dieter(Drummer)
AW: Zusatzcode für Zeichen "
29.03.2017 16:43:30
Dieter(Drummer)
Hallo Luc :-?,
da ach mit Harys Code die Anführungszeichen (") ebenfalls gefärbt werden, habe ich zusätzlich in den Code folgendes gesetzt:

With Application.ReplaceFormat.Font
.Subscript = False
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
cells.Replace What:="""", Replacement:="""", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True

So werden die Anführungszeichen (") wieder ohne Farbe gesetzt. Der Code kann evtl. auch kürzer sein, denn ich habe ihn mit Recorder aufgezeichnet.
Gruß, Dieter(Drummer)
AW: Codezusatz etwas gekürzt ...
29.03.2017 16:48:21
Dieter(Drummer)
... damit die Schrift sich nicht verändert:

With Application.ReplaceFormat.Font
.ColorIndex = xlAutomatic
End With
cells.Replace What:="""", Replacement:="""", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True

Es funktioniert auch.
Gruß, Dieter(Drummer)
AW: Sorry Hary, für 2 r in deinem Namen. owT
29.03.2017 15:16:13
Dieter(Drummer)

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige