title image


Smiley Ganz allgemein: Funktionen und Formatierung
Seh ich es richtig dass es grundsätzlich nicht möglich ist, in einer Funktion eine Zelle zu formatieren? Das wär ja ein ungeheures Defizit. Im konkreten Beispiel geht es darum Texte im jeweiligen Format zu verketten. Sowas geht zwar via Makro, ist aber dadurch nicht praxistauglich.



Ich hab jetzt viele Varianten ausprobiert, unter anderen auch dieses Beispiel. Der Witz dabei: zwar wird die Arbeit von einer Funktion erfült, das kann sie aber nur weil sie von einem Makro aufgerufen wird...



Sub Tester91()

BldString Range("A4"), Range("A1:A2"), Range("B1")

End Sub



Function BldString(destCell As Range, ParamArray rng() As Variant)

Dim cChr As Characters

Dim i As Long, l As Long, k As Long

Dim m As Long

Dim sStr As String

Dim cell As Range



sStr = ""

For i = LBound(rng) To UBound(rng) 'anfang array bis ende

If TypeName(rng(i)) = "Range" Then '2mal

For Each cell In rng(i)

sStr = sStr & cell.Value & " "

Next

End If

Next

destCell.Value = sStr

k = 0

For i = LBound(rng) To UBound(rng)

If TypeName(rng(i)) = "Range" Then

For Each cell In rng(i)

m = Len(cell.Value) + 1

If Application.IsText(cell) Then

For l = 1 To m

k = k + 1

If l m Then

Set cChr = cell.Characters(l, 1)

With destCell.Characters(k, 1)

.Font.Name = cChr.Font.Name

.Font.FontStyle = cChr.Font.FontStyle

.Font.ColorIndex = cChr.Font.ColorIndex

.Font.Size = cChr.Font.Size

.Font.Underline = cChr.Font.Underline

End With

End If

Next

ElseIf Application.IsNumber(cell) Then

k = k + 1

With destCell.Characters(k, m)

.Font.Name = cell.Font.Name

.Font.FontStyle = cell.Font.FontStyle

.Font.ColorIndex = cell.Font.ColorIndex

.Font.Size = cell.Font.Size

.Font.Underline = cell.Font.Underline

End With

k = k + m - 1

End If

Next

End If

Next

End Function

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: