Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wort färben ohne/mit Range

Wort färben ohne/mit Range
27.06.2016 16:20:14
Dieter(Drummer)
Guten Tag, VBA Spezialisten,
das folgende Makro öffnet zunächst eine Inputbox in der der Suchbegriff eingegeben werden kann. Der eingegebene Suchbegriff wird in allen markierten Zellen rot eingefärbt. Die Groß- und Kleinschreibung wird beachtet.
Nun meine Bitte: Es soll zusätzlich eine Abfrage erfolgen, ob im Range-Bereich oder OHNE Range-Bereich, der Suchbegriff gefärbt werden soll. Es sollen also zwei Varianten möglich sein. Die Spitze wäre, wenn eine Farbwahl noch möglich wäre.
Wäre toll wenn ihr mir da helfen könnt.
Mit Gruß, Dieter(Drummer)
'Aus dem Internet: http://answers.microsoft.com/de-de/office/forum/office_2007-excel/bedingte-formatierung-von-einzelnen-w%C3%B6rtern/0ae7fe74-9569-40a5-9174-1e7aea8944cc?auth=1
  • 
    Sub WortEinfaerben()
    Dim rngZelle As Range
    Dim intPosition As Integer
    Dim strWort As String
      strWort = InputBox("Welches Wort soll eingefärbt werden!", "Wort einfärben")
      If strWort  "False" Then
        For Each rngZelle In Selection.Cells
          intPosition = InStr(1, rngZelle, strWort)
          If intPosition  0 Then
            With rngZelle.Characters(intPosition, Len(strWort))
              .Font.Color = RGB(255, 0, 0)
            End With
          End If
        Next
      End If
    End Sub
    


  • 6
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Wort färben ohne/mit Range
    27.06.2016 16:52:18
    Michael
    Hi Dieter(D),
    z.B. so:
    Option Explicit
    Sub WF_wenig()
    Call WortFaerben(255, 0, 0) ' mit Selection und Inputbox
    End Sub
    Sub WF_viele()
    Call WortFaerben(0, 255, 0, Range("A1:A5"), "Mist")
    End Sub
    Sub WortFaerben(r As Byte, g As Byte, b As Byte, Optional s As Range, Optional strwort As  _
    String)
    Dim rngZelle As Range
    Dim intPosition As Integer
    If s Is Nothing Then Set s = Selection
    If strwort = "" Then
    strwort = InputBox("Welches Wort soll eingefärbt werden!", "Wort einfärben")
    End If
    If strwort  "False" Then
    For Each rngZelle In s
    intPosition = InStr(1, rngZelle, strwort)
    If intPosition  0 Then
    With rngZelle.Characters(intPosition, Len(strwort))
    .Font.Color = RGB(r, g, b)
    End With
    End If
    Next
    End If
    End Sub
    
    Werte in A1:A5:
    Misthaufen
    so ein Mist
    without any mistake
    it's a misty autumn
    CheMistry is cool
    

    tun brav.
    Schöne Grüße,
    Michael

    Anzeige
    AW: Danke Michael, aber ...
    27.06.2016 17:10:33
    Dieter(Drummer)
    ... Sorry, aber das ist nicht meine Vostellung. Es soll im Makro die Möglichkeit bestehen, dass abgefragt wird:
    1. ob mit oder ohne markierte Zellen das Suchwort (aus Inputbox) gefärbt werden soll.
    2. wenn ohne ZellMarkierung, dann soll das Suchwort im ganzen Tab. gefärbt werden.
    3. wenn Zellen markiert wurden (ohne Festlegung im Makro!), soll im makrierten Bereich das Wort gefärbt werden.
    Dennoch Danke für deine Hilfe, Michael.
    Wäre toll wenn dies Möglichkeit per Makro machbar wäre.
    Gruß, Dieter(Drummer)

    AW: Danke Michael, aber ...
    27.06.2016 17:40:20
    Christian
    Hallo Dieter,
    vielleicht so: Code unterscheidet ob nur eine Zelle oder ein Bereich markiert ist.
    Ist nur eine Zelle markiert wird im ganzen Blatt gefärbt, sonst nur im ausgewähltem Bereich.
    
    Sub WortEinfaerben()
    Dim rngZelle As Range
    Dim intPosition As Integer
    Dim strWort As String
    Dim antw As String
    Dim blnS As Boolean
    blnS = False
    If Selection.Cells.Count > 1 Then
    blnS = True
    End If
    strWort = InputBox("Welches Wort soll eingefärbt werden!", "Wort einfärben")
    If strWort  "False" Then
    If blnS = False Then
    ActiveSheet.Cells.SpecialCells(xlCellTypeConstants).Select
    End If
    For Each rngZelle In Selection.Cells
    intPosition = InStr(1, rngZelle, strWort)
    If intPosition  0 Then
    With rngZelle.Characters(intPosition, Len(strWort))
    If blnS = True Then
    .Font.Color = RGB(255, 0, 0)
    Else
    .Font.Color = vbYellow  'RGB(255, 0, 255)
    End If
    End With
    End If
    Next
    ActiveSheet.Cells(1, 1).Select
    End If
    End Sub
    
    Gruß,
    Christian

    Anzeige
    AW: Danke Christian. Noch etwas ...
    27.06.2016 18:07:02
    Dieter(Drummer)
    ... erstmal Danke Christian, das funktioniert schon prima. Ich hätte gerne noch ein kleine Anpassung.
    Jetzt ist es so, bei Markierung EINER Zelle, wird im ganzen Blatt, das Suchwort in Farbe gesetzt. Ich muss also mindestens 2 Zellen markieren, damit nicht im ganzen Blat die Farbe gesetzt wird.
    Es wäre gut, wenn du es noch so ändern köntest, dass bei einer Zellmarkrierung, oder mehreren Zellmarkierungen, nur in der Makierung der Suchbegriff gefärbt wird. Das geht dann wohl nur über eine Abfrage, ob im ganzen Blatt oder in der Markierung gefärbt werden soll.
    Ich hoffe, ich habe mich verständlich ausgedrückt.
    Wäre prima, wenn du mir nochmal helfen kannst.
    Gruß, Dieter(Drummer)

    Anzeige
    AW: Danke Christian. Noch etwas ...
    27.06.2016 20:32:12
    Christian
    Hallo Dieter,
    das ganze etwas abgeändert und mit vorgeschaltetem Auswahldialog:
    Gruß,
    Christian
    Sub Dialog()
    Dim Antw As String
    Dim txt1 As String, txt2 As String
    txt1 = "Wort im gesamten Blatt suchen und markieren (rot)?"
    txt2 = "Wort in Zellauswahl suchen und gelb markieren (gelb)?"
    Antw = MsgBox(txt1, vbYesNoCancel, "Wort markieren")
    If Antw = vbYes Then
    WortEinfaerben2 ("ganzesBlatt")
    ElseIf Antw = vbNo Then
    Antw = MsgBox(txt2, vbYesNo, "Wort markieren")
    If Antw = vbYes Then
    WortEinfaerben2 ("nurAuswahl")
    Else
    Exit Sub
    End If
    Else
    Exit Sub
    End If
    End Sub
    Private Sub WortEinfaerben2(ByRef strAntw As String)
    Dim rngZelle As Range
    Dim intPosition As Integer
    Dim strWort As String
    'Dim Antw As String
    Dim blSel As Boolean
    blSel = False
    strWort = InputBox("Welches Wort soll eingefärbt werden!", "Wort einfärben")
    If strWort  "False" And strWort  "" Then
    ' im ganzen blatt Suchen
    If strAntw = "ganzesBlatt" Then
    blSel = True
    ActiveSheet.Cells.SpecialCells(xlCellTypeConstants).Select
    End If
    For Each rngZelle In Selection.Cells
    intPosition = InStr(1, rngZelle, strWort)
    If intPosition  0 Then
    With rngZelle.Characters(intPosition, Len(strWort))
    If blSel = True Then
    .Font.Color = RGB(255, 0, 0)
    Else
    .Font.Color = vbYellow  'RGB(255, 0, 255)
    End If
    End With
    End If
    Next
    ActiveSheet.Cells(1, 1).Select
    End If
    End Sub
    

    Anzeige
    AW: Danke Christian, einfach perfekt ...
    27.06.2016 20:48:24
    Dieter(Drummer)
    ... und funktioniert prima.
    Gruß und noch einen schönen Abend,
    Dieter(Drummer)

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige