VBA Schriftfarbe wechseln nach Zeilenumbruch?

... komplette Frage anzeigen

1 Antwort

Du kennst Doch die Zeichenlängen.
Mal ein Beispielcode:

Dim strText As String
Dim intStart As Integer
Dim intLength As Integer
Dim rngToDo As Range
Set rngToDo = Worksheets(1).Range("W19")

strText = "Hier steht ein Variabler Text"
intStart = Len(ActiveSheet.Range("W19"))
intLength = Len(strText)

rngToDo.Value = rngToDo & vbCrLf & vbCrLf & strText
With rngToDo.Characters(Start:=intStart + 2, Length:=intLength + 3).Font
.ColorIndex = 3
End With

Allerdings wird immer nur der zuletzt eingefügte String gefärbt.
Aber vielleicht hilft Dir das ja schon weiter.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Kaluz
16.07.2017, 21:11

Len war das richtige Stichwort, hab es nun hinbekommen


Randomize
testsatzauswahl = Int((2 - 1 + 1) * rnd + 1)

If testsatzauswahl = 1 Then
satz1 = "Dies ist ein Testsatz"
ElseIf testsatzauswahl = 2 Then
satz1 = "Dies ist noch ein Testsatz"
End If

satz2 = "Einfach mal testen"
satz3 = "Testlauf"

Worksheets(1).Cells(19, 23) = satz1
Worksheets(1).Cells(19, 23) = Worksheets(1).Cells(19, 23) & vbCrLf & satz2
Worksheets(1).Cells(19, 23) = Worksheets(1).Cells(19, 23) & vbCrLf & satz3

With Worksheets(1).Cells(19, 23).Characters(Start:=1, Length:=Len(satz1)).Font
.ColorIndex = 5
End With

With Worksheets(1).Cells(19, 23).Characters(Start:=1 + Len(satz1) + 2, Length:=Len(satz2)).Font
.ColorIndex = 1
End With

With Worksheets(1).Cells(19, 23).Characters(Start:=1 + Len(satz1) + 2 + Len(satz2) + 2, Length:=Len(satz3)).Font
.ColorIndex = 4
End With


Ist allerdings noch sehr umständlich wenn es mehrere Sätze werden, aber es tut was es soll :)


Danke für den Lösungsvorschlag hat mir sehr geholfen :)

0

Was möchtest Du wissen?