Hallo!
Ich habe gerade Langeweile, deshalb mal ein Lösungsansatz.
Aber eins vorweg:
Solange es sich nur um ein paar Zellen handelt, könnte Dein Wunsch Sinn machen.
Handelt es sich um (sehr) viele Zellen, landest Du in der Komplexitätsfalle!
Die Datei wird nicht nur unnötig groß, sondern bringt Excel aufgrund der Vielzahl von Formatierungen an die Grenze oder darüber hinaus!
ABER:
Dies funktioniert nicht mit Formelzellen, nur mit Texten in den Zellen!
Manuell formatierst Du einen Teil der Zelle ja so.
- Zelle markieren, mit F2 in den Bearbeitungsmodus
- Textteil markieren, Format zuweisen
Wenn ich jetzt den Makrorekorder anwerfe, kommt sowas dabei raus:
Code:
Sub Makro7()
'
' Makro7 Makro
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "Heute" & Chr(10) & "15.11.2015"
With ActiveCell.Characters(Start:=1, Length:=6).Font
.Name = "Calibri"
.FontStyle = "Standard"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
With ActiveCell.Characters(Start:=7, Length:=10).Font
.Name = "Calibri"
.FontStyle = "Fett"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleSingle
.Color = -16776961
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
Range("A2").Select
End Sub
Dies auf das Wesentliche eindampfend, verbleibt:
Code:
Sub Makro7()
With ActiveCell.Characters(Start:=7, Length:=10).Font
.FontStyle = "Fett"
.Underline = xlUnderlineStyleSingle
.Color = -16776961
End With
End Sub
Schon etwas übersichtlicher, gelle?
Ich benutze in solchen Fällen immer die englische Bezeichnung, die funktioniert auf allen Sprachversionen von Excel, also "bold" statt "Fett".
Problem: Der Rekorder ermittelt absolute Werte für Start und Lenght.
Start ist eine Stelle nach dem Zeichenumbruch.
Zeichen(10) ist in VBA Chr(10)
Man findet es mit der InStr()-Funktion:
InStr(ActiveCell,chr(10)) + 1
Die Länge ist unerheblich, sie darf nur nicht zu kurz sein.
Da ich schreibfaul bin, nehme ich in so einem Fall einfach 9^9 also 387.420.489
Zu den nächsten Problemen:
Die Berechnung einer Formel löst kein auswertenbares Event aus, in dem man das Target auswerten könnte!
(vielleicht schafft es MS in der Version 2055 endlich mal, im _Calculate-Event ein Target zu übergeben)
Man könnte über das _Change-Event die Zellen überwachen, die Einfluss auf das Formelergebnis haben, sinnvoller erscheint es mir jedoch, die Zellen zu markieren und einmalig ein Makro ablaufen zu lassen.
Nächstes Problem:
Es kann natürlich sein, dass kein Zeilenumbruch vorhanden ist.
Dieser Fehler muss abgefangen werden!
Also:
Markiere Deine zu formatierenden Zellen und lasse folgendes Makro laufen:
Sub FormatSpezial()
Dim Zelle As Range, ErstesZeichen As Long
For Each Zelle In Selection
ErstesZeichen = InStr(Zelle, Chr(10)) + 1
If ErstesZeichen > 1 Then
With Zelle.Characters(Start:=ErstesZeichen, Length:=9 ^ 9).Font
.FontStyle = "bold"
.Underline = xlUnderlineStyleSingle
.Color = -16776961
End With
End If
Next
End Sub
Ergibt so etwas:
Dateiupload bitte im Forum! So geht es: Klick mich! src="
Dateiupload bitte im Forum! So geht es: Klick mich!" />
Das war es schon ... :21:
Gruß Ralf