Hallo zusammen,
ich möchte Text-Inhalt eine Zelle unterschiedlich darstellen: kursiv, fett-markiert, farbliche Darstellung ... alles gleichzeitig in nur eine Zelle. Wie macht man es?
Danke und Gruß
Hallo zusammen,
ich möchte Text-Inhalt eine Zelle unterschiedlich darstellen: kursiv, fett-markiert, farbliche Darstellung ... alles gleichzeitig in nur eine Zelle. Wie macht man es?
Danke und Gruß
With $oExcel.Range('A1')
.Font.Bold = True
.Font.Italic = True
.Font.Color = 0xFF0000 ; als BGR
EndWith
Sicher, dass er nicht in einer Zelle einige Zeichen fett und einige nicht möchte?
Sicher, dass er nicht in einer Zelle einige Zeichen fett und einige nicht möchte?
Er sprach vom gesamten Inhalt der Zelle, nicht von einzelnen Zeichen. - Man kann auch mehr hineininterpretieren, wenn man will...
Er sprach vom gesamten Inhalt der Zelle, nicht von einzelnen Zeichen. - Man kann auch mehr hineininterpretieren, wenn man will...
Naja, du kennst es ja selbst wie manchen Leute ihre Fragen hier formulieren und dann was ganz anderes möchten.
OK, greifen wir mal deine Interpretation auf und bieten auch diese Lösung:
; Exel ist offen
$oExcel = ObjGet('','Excel.Application')
If Not IsObj($oExcel) Then Exit MsgBox(0, 'Fehler', 'Kein Objekt')
$oExcel.Range('A1').Value = "Hallo"
; 3.tes bis letztes Zeichen formatieren
_Excel_CharactersFormatFont($oExcel, 'A1', 3, -1, "Fett Kursiv Unterstrichen Durchgestrichen", 0x40AE00, "Comic Sans MS", 11)
; oder statt String mit Zelle, Range der Zelle übergeben
;~ $oA1 = $oExcel.Range('A1')
;~ _Excel_CharactersFormatFont($oExcel, $oA1, 3, -1, "Fett Kursiv Unterstrichen Durchgestrichen", 0x22AEFF, "Comic Sans MS", 11)
; #FUNCTION# ====================================================================================================================
; Name ..........: _Excel_CharactersFormatFont
; Description ...: Sets formatting for one or more contiguous characters in a given cell
; Syntax ........: _Excel_CharactersFormatFont($_oExcel, $_sCellRC, $_iStart[, $_iLen = 1[, $_sStyle = Default[, $_iColorBGR = Default[,
; $_sFont = Default[, $_iSize = Default]]]]])
; Parameters ....: $_oExcel - The Excel object
; $_soCell - Cell name (e.g. "A1") or cell-range-object
; $_iStart - Character position inside the cell (1-based)
; $_iLen - [optional] The count of contiguous characters to format. -1=up to the end, Default is "1".
; $_iColorBGR - [optional] The character color as BGR. Default is xlAutomatic - "Default" (-1 will also accepted).
; $_sStyle - [optional] The style, one or combined with space ("Bold"; "Bold Italic Underline"). Default is none - "Default" (-1 will also accepted).
; $_sFont - [optional] The character font name. Default is "Arial" - "Default" (-1 will also accepted).
; $_iSize - [optional] The character font size. Default is "10" - "Default" (-1 will also accepted).
; Return values .: Success 1
; ...............: Failure 0 @error = 1 ($_oExcel is'nt object), = 2 (formatting range exceeds string length)
; Author ........: BugFix
; ===============================================================================================================================
Func _Excel_CharactersFormatFont(ByRef $_oExcel, $_soCell, $_iStart, $_iLen=1, $_sStyle=Default, $_iColorBGR=Default, $_sFont=Default, $_iSize=Default)
If Not IsObj($_oExcel) Then Return SetError(1,0,0)
Local $oRange = IsObj($_soCell) ? $_soCell : $_oExcel.Range($_soCell)
Local $iLen = StringLen($oRange.Value)
If $_iStart > $iLen+1 Then Return SetError(2,0,0)
If $_iLen = -1 Then $_iLen = $iLen+1 - $_iStart
If ($_iStart + $_iLen) > $iLen+1 Then Return SetError(2,0,0)
$_sStyle = ($_sStyle = Default Or $_sStyle = -1) ? "" : $_sStyle
$_iColorBGR = ($_iColorBGR = Default Or $_iColorBGR = -1) ? "xlAutomatic" : $_iColorBGR
$_sFont = ($_sFont = Default Or $_sFont = -1) ? "Arial" : $_sFont
$_iSize = ($_iSize = Default Or $_iSize = -1) ? 10 : $_iSize
With $oRange.Characters($_iStart, $_iLen).Font
.Bold = (StringInStr($_sStyle, "Bold") Or StringInStr($_sStyle, "Fett") ? True : False)
.Italic = (StringInStr($_sStyle, "Italic") Or StringInStr($_sStyle, "Kursiv") ? True : False)
.Underline = (StringInStr($_sStyle, "Underline") Or StringInStr($_sStyle, "Unterstrichen") ? True : False)
.Strikethrough = (StringInStr($_sStyle, "Strikethrough") Or StringInStr($_sStyle, "Durchgestrichen") ? True : False)
If $_iColorBGR = "xlAutomatic" Then
.ColorIndex = -4105 ; xlAutomatic
Else
.Color = $_iColorBGR
EndIf
.Name = $_sFont
.Size = $_iSize
EndWith
Return 1
EndFunc ;==>_Excel_CharactersFormatFont
Alles anzeigen
Hallo zusammen,
sorry, ich habe es wirklich nur eine einzige Zelle gemeint.
Danke BugFix für die Lösung!
Das Problem ist damit behoben.
sorry, ich habe es wirklich nur eine einzige Zelle gemeint.
Ich sags doch