Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Mehrere Schriftarten in gleicher Zelle

Betrifft: Mehrere Schriftarten in gleicher Zelle von: Barbara
Geschrieben am: 14.09.2004 13:30:51

Hallo,
ich würde gerne in einer Zelle jedes d durch ein rotes Karo ersetzen, das wäre Zeichen 168, color 255, Font.name "Symbol"
Das d steht für Diamond (Spielkarten).

Die anderen Zeichen sollen so bleiben, wie sie sind.

Nebenfrage:
Gibt es eine VBA-Funktion, mit der ich einzelne Zeichen ersetzen kann?

Mit mid(Text, 4, 1) bekomme ich zB den vierten Buchstaben heraus. Aber wie bekomme ich einen anderen Buchstabe stattdessen rein?
Oder anders: Erstze den vierten Buchstaben durch ein i

Danke, B.

  


Betrifft: zur zweiten Frage von: Reinhard
Geschrieben am: 14.09.2004 13:43:03

Hi Barbara,
Sub Test()
Wort = "abcdef"
Mid(Wort, 4, 1) = "x"
MsgBox Wort
End Sub

Gruß
Reinhard


  


Betrifft: AW: zur zweiten Frage von: nighty
Geschrieben am: 14.09.2004 13:48:02

hi Reinhard :)

ich brauch immer ein wenig laenger :))

zwei finger tippsystem :)

gruss nighty


  


Betrifft: AW: zur zweiten Frage von: Barbara
Geschrieben am: 14.09.2004 13:55:58

Danke, das ist eine gute Antwort, und so einfach.

Bleibt nur noch das Problem der gemischten Stile.
Habe eine Zelle mit verschiedenen Stilen und Farben getestet:
ActiveCell.Font.Color ist 0
ActiveCell.Font.Name ist auch 0, wenn mehrere Stile vorkommen.
Bleibt noch die Frage offen:
Wie kann man nun mitels VBA einen Text mit mehreren Stilen und Farben in einer Zelle erzeugen?


  


Betrifft: AW: Mehrere Schriftarten in gleicher Zelle von: nighty
Geschrieben am: 14.09.2004 13:45:50

hi barbera :)

wie gewuenscht :)

gruss nighty

ein kleines beispiel auf zelle a1 bezogen(dessen inhalt)

Sub makro01()
Dim name1 As String
Dim laenge As Integer
Dim durchlauf As Integer
name1 = Cells(1, 1)
laenge = Len(name1)
For durchlauf = 1 To laenge
If Mid$(name1, durchlauf, 1) = "i" Then
name1 = Mid$(name1, 1, durchlauf - 1) & "DeinZeichen" & Mid$(name1, durchlauf + 1, laenge)
durchlauf = laenge
End If
Next durchlauf
Cells(2, 1) = name1
End Sub



  


Betrifft: AW: Mehrere Schriftarten in gleicher Zelle von: nighty
Geschrieben am: 14.09.2004 14:16:08

hi barbara :)

oder so :))

bezieht sich auf die aktive zelle

gruss nighty


Sub Makro1()
Dim laenge As Integer
Dim durchlauf As Integer
Dim name1 As String

rem hier der asci code deines einzusetzenden zeichens

name2 = Chr$(168)
name1 = Cells(1, 1)
laenge = Len(name1)
For durchlauf = 1 To laenge

rem hier das auszutauschende zeichen

If Mid$(name1, durchlauf, 1) = "i" Then
With ActiveCell.Characters(Start:=durchlauf, Length:=1).Font

rem hier dein font

        .Name = "Albertus"
        .FontStyle = "Standard"

rem hier die font groesse

        .Size = 30
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
End With
ActiveCell = Mid$(name1, 1, durchlauf - 1) & name2 & Mid$(name1, durchlauf + 1, laenge)
durchlauf = laenge
End If
Next durchlauf
End Sub



  


Betrifft: AW: Mehrere Schriftarten in gleicher Zelle von: Barbara
Geschrieben am: 14.09.2004 16:22:37

Danke Reinhard, danke Nighty,

Ihr seid super, und so schnell. Ich habe alles verarbeitet.
Nighty, Du hast nach dem Mid immer so ein komisches $-Zeichen, wozu das? hat das eine bestimmte Funktion?
Zitat: ...Mid$(name1,...

Dake Euch beiden nochmals.

LG, B.


  


Betrifft: AW: Mehrere Schriftarten in gleicher Zelle von: Reinhard
Geschrieben am: 14.09.2004 22:10:47

Hi Barbara,
ich glaub in VBA ist mid und mid$ das Gleiche. may be kommt vom UraltBasic, da war da wohl ein Unterschied *nix genaues weiss*
Gruß
Reinhard


  


Betrifft: und zur ersten frage von: Reinhard
Geschrieben am: 14.09.2004 14:02:13

Hi barbara,
Color 255? es gibt doch nur 56 Farben? probierl mal:
Sub Makro2()
With Worksheets("Tabelle1")
    For n = 1 To Len(.Range("A1"))
        'MsgBox .Range("A1").Characters(n, 1).Text
        If .Range("A1").Characters(n, 1).Text = "d" Then
            .Range("A1").Characters(n, 1).Font.Name = "Symbol"
            .Range("A1").Characters(n, 1).Text = Chr(168)
            .Range("A1").Characters(n, 1).Font.ColorIndex = 3
        End If
    Next n
End With
End Sub

Gruß
Reinhard


 

Beiträge aus den Excel-Beispielen zum Thema "Mehrere Schriftarten in gleicher Zelle"