Microsoft Excel

Herbers Excel/VBA-Archiv

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

Schriftfarbe für Textteil über Dialogs(26)


Betrifft: Schriftfarbe für Textteil über Dialogs(26) von: Dieter(Drummer)
Geschrieben am: 15.07.2017 10:44:44

Guten Tag VBA Spezialisten,
das Makro von Toni funtioniert perfekt. Ich suche noch die Möglichkeit, dass ich den Rest-Textteil z.B. mit "Application.Dialogs(26)", Farbe für Schrift, wählen kann.
Der Dialog wird wohl aufgerufen, aber die gewählte Schriftfarbe wird nicht genutzt.
Was ist da falsch im Makro oder fehlt dort?
Mit der Bitte um Hilfe grüßt
Dieter(Drummer)

'Herber: von Tino am 14.07.2017 18:52:46

Sub TextTeilFarbe()
Dim rng As Range, sInput$
Dim nVon&, nBis&
sInput = InputBox("Text Eingeben")
For Each rng In Selection
    'rng.Font.Color = RGB(0, 0, 255) 'Von Toni ok.
    rng = Application.Dialogs(26).Show 'Font: Hier soll die Schriftfarbe angegeben werden _

nVon = InStr(rng.Value, sInput)
    If nVon > 0 Then
        nBis = Len(sInput)
        rng.Characters(Start:=nVon, Length:=nBis).Font.ColorIndex = xlAutomatic
    End If
Next
End Sub

  

Betrifft: AW: Schriftfarbe für Textteil über Dialogs(26) von: Tino
Geschrieben am: 15.07.2017 15:22:08

Hallo,
vielleicht so, jetzt auch mehrfach vorkommen.

PS: Tino nicht Toni

Sub Farben()
Dim rng As Range, sInput$
Dim nVon&, nBis&, lngFarbe&

sInput = InputBox("Text Eingeben")
lngFarbe = ColorFromPallet

For Each rng In Selection
    rng.Font.Color = lngFarbe
    nVon = InStr(rng.Value, sInput)
    Do
        If nVon > 0 Then
            nBis = Len(sInput)
            rng.Characters(Start:=nVon, Length:=nBis).Font.ColorIndex = xlAutomatic
            nVon = nVon + nBis
            nVon = InStr(nVon, rng.Value, sInput)
        End If
    Loop While nVon > 0
Next
End Sub

Function ColorFromPallet(Optional lOldCol As Double = xlNone) As Long
    Dim dSavCol As Long, dNewCol As Long
    Dim iRGB_R As Integer, iRGB_G As Integer, iRGB_B As Integer
  
    dSavCol = ActiveWorkbook.Colors(32)
    If lOldCol = xlNone Then
        ColIx2RGB 13160660, iRGB_R, iRGB_G, iRGB_B
    Else
        ColIx2RGB lOldCol, iRGB_R, iRGB_G, iRGB_B
    End If
    If Application.Dialogs(xlDialogEditColor).Show _
        (32, iRGB_R, iRGB_G, iRGB_B) Then
        ColorFromPallet = ActiveWorkbook.Colors(32)
        ActiveWorkbook.Colors(32) = dSavCol
    Else
        ColorFromPallet = lOldCol
    End If
End Function

Sub ColIx2RGB(ByVal lCol As Long, _
              iR As Integer, iG As Integer, iB As Integer)
  iR = lCol Mod 256:  lCol = lCol \ 256
  iG = lCol Mod 256:  lCol = lCol \ 256
  iB = lCol Mod 256
End Sub

Gruß Tino


  

Betrifft: AW: Schriftfarbe für Textteil über Dialogs(26) von: Dieter(Drummer)
Geschrieben am: 15.07.2017 15:36:08

Herzlichen Dank Tino und Sorry für "Toni".
Da hast du ja eine prima Erweiterung geschaffen, die excellent funktioniert.
Danke nochmal für deine erneute, erweiterte Lösung.
Wünsche dir ein schönes Wochenende.
Gruß, Dieter(Drummer)


Beiträge aus den Excel-Beispielen zum Thema "Schriftfarbe für Textteil über Dialogs(26)"