Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1196to1200
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

Textformatierung

Textformatierung
Maik.f
Hallo!
In der Zelle A1 steht zum Beispiel "Ich habe Excel gern!" Ich möchte folgendes erreichen:
- das erste, vierte, siebente, zehnte,... Zeichen wird in rot dargestellt
- das zweite, fünfte, achte, elfte,... Zeichen wird in grün dargestellt
- das dritte, sechste, neunte, zwölfte,... Zeichen wird in blau dargestellt
Falls möglich sollten Leerzeichen ausgelassen werden, also:
"I"=rot "c"=grün "h"=blau 'Leerzeichen' "h"=rot "a"=grün "b"=blau "e"=rot 'Leerzeichen' "E"=grün "x"=blau "c"=rot "e"=grün "l"=blau 'Leerzeichen' "g"=rot "e"=grün "r"=blau "n"=rot "!"=grün
Gibt es eine Möglichkeit, den Textstring einer Zelle automatisch per VBA so zu formatieren?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textformatierung
09.02.2011 17:48:17
Matthias
Hallo Maik
Hier mal ein Ansatz:
Text steht in Zelle A1
Userbild
Sub TexTinA1()
'nur als erster Ansatz gedacht. Einfach ein bisschen damit spielen :o)
Dim x As Long
Application.ScreenUpdating = False
[A1].Font.ColorIndex = xlAutomatic
For x = 1 To Len([A1]) Step 3
[A1].Characters(Start:=x, Length:=1).Font.ColorIndex = 3
[A1].Characters(Start:=x + 2, Length:=1).Font.ColorIndex = 4
[A1].Characters(Start:=x + 3, Length:=1).Font.ColorIndex = 6
Next
End Sub
https://www.herber.de/bbs/user/73469.xls
Gruß Matthias
Anzeige
AW: Textformatierung
10.02.2011 07:34:57
Maik.f
Hallo Matthias,
die Idee war schonmal goldrichtig! Ich habe einwenig am Code rumgefummelt und jetzt sieht es so aus:
Sub TextInA1()
Dim x As Long
[A1].Font.ColorIndex = xlAutomatic
For x = 1 To Len([A1]) Step 3
[A1].Characters(Start:=x, Length:=1).Font.ColorIndex = 3
[A1].Characters(Start:=x + 1, Length:=1).Font.ColorIndex = 10
[A1].Characters(Start:=x + 2, Length:=1).Font.ColorIndex = 5
Next
End Sub
Nochmals vielen Dank!
Maik
AW: Textformatierung
10.02.2011 08:07:42
Erich
Hallo Maik,
wolltest du die Leerzeichen nicht auslassen? Das kommt jetzt gar nicht mehr vor.
Probier auch mal

Sub A1Bunt()
Dim arrC, pp As Long, nn As Integer
'   Application.ScreenUpdating = False ' evtl. nach Test aktivieren
arrC = Array(3, 10, 5)                 ' Farbnummern wählen
With Cells(1, 1)                       ' Zelle
For pp = 1 To Len([A1])
If Mid(.Value, pp, 1) > " " Then
.Characters(pp, 1).Font.ColorIndex = arrC(nn Mod 3)
nn = nn + 1
End If
Next
End With
'   Application.ScreenUpdating = True  ' evtl. nach Test aktivieren
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
:o) gefällt mir sehr gut, Erich - kwT
10.02.2011 16:17:05
Matthias
kleine Korrektur
10.02.2011 17:18:54
Erich
Hi,
da war noch ein kleiner Scherz drin (nicht falsch, aber doch eine Falle bei künftigen Änderungen).
Die Zelle habe ich wohl mit "With Cells(1, 1)" bestimmt, dann aber doch "Len([A1])" geschrieben.
Die Zeile sollte lauten:
For pp = 1 To Len(.Value)
Und für pp reicht wohl Integer - das muss jedenfalls nicht größer sein als nn. Oder beide werden Long.
@Matthias: Freut mich! :-)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: kleine Korrektur
11.02.2011 11:00:14
Maik.f
Hallo Erich,
der Code von Matthias war schon sehr gut, aber die Leerzeichen zu berücksichtigen setzt dem Ganzen die Krone auf!
Die Deklaration habe ich dahingehen geändert:
Dim arrC, pp, nn As Long
Bei deinem Vorschlag
Dim arrC As Long, nn, pp As Integer
bekomme ich bezogen auf arrC die Fehlermeldung, "Erwartet Datenfeld"
Egal, denn wenn alles Long ist, funktioniert es super! Vielen Dank!
Gruß, Maik
Anzeige
bitte nicht falsch deklarieren!
11.02.2011 11:34:32
Erich
Hi Maik,
deine Deklaration führt zu Problemen.
Dim arrC, pp, nn As Long
bedeutet ausführlich dasselbe wie
Dim arrC As Variant, pp As Variant, nn As Long
Bei "Dim arrC, pp, nn As Long" bezieht sich das "Long" nur auf nn, nicht auf arrC und pp.
(Wenn man hinter einer Variablen keinen Typ angibt, wird Variant angenommen.)
Es bedeutet nicht - wie du wohl glaubst - das hier:
Dim arrC As Long, pp As Long, nn As Long
In meiner Routine stand
Dim arrC, pp As Long, nn As Integer
oder länglicher geschrieben:
Dim arrC As Variant, pp As Long, nn As Integer
Das hättest du ändern können in
Dim arrC, pp As Integer, nn As Integer
oder
Dim arrC, pp As Long, nn As Long
oder auch länglicher
Dim arrC As Variant, pp As Long, nn As Long
Schau doch auch noch mal in die VBA-Hilfe zu Dim.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige