Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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
Teil suchen und komplettes Wort markieren
16.12.2019 09:29:17
Ich
Hallo. Ich bin recht neu mit VBA. Meisten suche ich mir etwas aus Foren zusammen oder nutze die Makro Aufzeichnung, welche für Kleinigkeiten für mich ausreichend ist. Nun stehe ich vor einem Problem und habe bisher keine zufriedenstellenden Antworten im Netz gefunden. Ich habe eine Kontoauszugstabelle. Nun möchte ich in der Spalte C und D nach bestimmten Zeichenfolgen suchen und zwar Rechnungsnummern. Hier möchte ich aber nur die ersten beiden Stellen (von 6) suchen lassen und dann die gefundene Zahl dann komplett in roter Schrift erscheinen lassen. Hier möchte ich bei der Suche aber zudem auch noch variabel sein, meine also ich suche nach 70**** oder auch z.B. nach 71****. Am Besten wäre hier die Möglichkeit beides gleichzeitig suchen zu können und später irgendwann mal wieder editierbar, also 71**** und 72**** usw. Wenn also gerade etwas (derzeit) mit 70 oder 71 gesucht und gefunden wird und es die ersten beiden Stellen von insgesamt 6 Stellen ist, dann bitte die gesamten 6 Stellen rot markieren. Über eine Lösung wütrde ich mich sehr freuen.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teil suchen und komplettes Wort markieren
16.12.2019 09:47:08
Hajo_Zi
mache es ohne VBA.

Tabelle1
 H
1570
2670
370123456
44570
die bedingte Formatierung Fülleffekte, Symbole, Datenbalken
werden in dieser Tabelle nicht dargestellt

Bedingte Formatierung Haupttabelle 1  
Wird angewendet auf   Nr. Bed.  Regeltyp  Operator   Formel1   Formel2   Format Schrift Füll-farbe   Unterstrichen   Schrift- farbe Muster   Muster-farbe Typ Bereich
$H:$H01.Bed.: Formel ist =LINKS(H1;2)="70"  15773696         2$H:$H
Bedingte Formatierung Haupttabelle 2 oberere/unterer Bereich    
Wird angewendet auf   Nr. Bed.  Format Zelle Anhalten Auswahl   Anzeige   Anzahl   Durchschnitt   Typ   Bereich
$H:$H01.Bed.   Falsch          2$H:$H
Die Bedingungen wurden mit Excel-Version ab 2007 ausgelesen.




In diesem Forum bekomme ich kein Mailbenachrichtigung, weitere Antworten sind zufällig.
Das wurde schon an Hans gemeldet.
Mail's von Hans kommen an.
Anzeige
AW: Teil suchen und komplettes Wort markieren
16.12.2019 10:00:28
Nepumuk
Hallo,
teste mal:
Option Explicit
Public Sub Markieren()
Dim vntItem As Variant
Dim strFirstAddress As String
Dim objCell As Range
With Worksheets("Tabelle1").Columns("C:D") ' Tabellennamen anpassen !!!
For Each vntItem In Array("70?", "71?") ' Ziffern anpassen !!!
Set objCell = .Find(What:=vntItem, LookIn:=xlValues, _
LookAt:=xlWhole, MatchCase:=False)
If Not objCell Is Nothing Then
strFirstAddress = objCell.Address
Do
objCell.Font.Color = vbRed
Set objCell = .FindNext(After:=objCell)
Loop Until objCell.Address = strFirstAddress
End If
Next
End With
Set objCell = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Teil suchen und komplettes Wort markieren
16.12.2019 10:02:40
Nepumuk
Oooops,
du suchst nach 6 Zeichen.
Ändere die Zeile so:
For Each vntItem In Array("70?", "71?") ' Ziffern anpassen !!!

Gruß
Nepumuk
AW: Teil suchen und komplettes Wort markieren
16.12.2019 11:39:16
Ich
Vielen Dank @Nepumuk. Leider hat es bei mir nicht funktioniert. Du hast angegeben, dass ich die Ziffern anpassen soll, meinst du dann damit nur z.B. aus einer 71 dann später eine 72 zu machen? Denn die stellen nach der 70, 71 oder 72 kenne ich ja noch nicht. Ich habe versucht das Makro im Project unter "Diese Arbeitsmappe" einzugeben als auch in "Tabelle1" als auch extra ein Modul erstellt. Wenn ich es starte passiert einfach nichts.
Vielleicht liegt es auch daran, dass ich die Tabelle nicht vollständig erklärt habe. In jeder Zeile können mehrere Wörter und Zahlen etc. vorhanden sein. Unter anderem dann irgendwo eine Rechnungsnummer beginnend mit 70... oder 71.... später dann dementsprechend dann 72.... usw. Nun wollte ich diese Nummern suchen lassen und dann auch nur diese (dann komplette Nummer) farblich rot hervorheben.
Anzeige
AW: Teil suchen und komplettes Wort markieren
16.12.2019 12:47:19
Nepumuk
Hallo,
dann lade eine Mustermappe hoch.
Gruß
Nepumuk
AW: Teil suchen und komplettes Wort markieren
16.12.2019 13:32:22
Ich
Hier eine Mustermappe
https://www.herber.de/bbs/user/133808.xlsx
Wenn ich hier übrigens falsch antworte oder so bitte Bescheid geben. Bin neu hier im Forum.
Vielen Dank.
AW: Teil suchen und komplettes Wort markieren
16.12.2019 14:35:52
Nepumuk
Hallo,
teste mal:
Option Explicit

Public Sub Markieren()
    Dim strFirstAddress As String, strInput As String
    Dim lngRow As Long, lngStart As Long
    Do
        strInput = InputBox("Bitte die ersten zwei Ziffern des Kontos eingeben.", "Eingabe")
        If StrPtr(strInput) = 0 Then Exit Sub
        If strInput Like "##" Then Exit Do
        Call MsgBox("Bitte eine zweistellige Zahl eingeben.", vbExclamation, "Hinweis")
    Loop
    With Worksheets("Tabelle1") ' Tabellennamen anpassen !!!
        For lngRow = 3 To .Cells(.Rows.Count, 4).End(xlUp).Row
            lngStart = SearchNumber(strInput, .Cells(lngRow, 4).Text)
            If lngStart > 0 Then .Cells(lngRow, 4).Characters(lngStart + 1, 6).Font.Color = vbRed
        Next
    End With
End Sub

Private Function SearchNumber(ByVal strDigits As String, pvstrText As String) As Long
    Dim objRegEx As Object, objMatch As Object
    Set objRegEx = CreateObject("VBScript.RegExp")
    With objRegEx
        .MultiLine = True
        .Global = True
        .IgnoreCase = False
        .Pattern = strDigits & "\d{4}"
        Set objMatch = .Execute(pvstrText)
    End With
    If objMatch.Count = 1 Then SearchNumber = objMatch(0).FirstIndex
End Function

Gruß
Nepumuk
Anzeige
AW: Teil suchen und komplettes Wort markieren
16.12.2019 14:46:14
Ich
Yes! So sollte es sein. Soweit ich es testen konnte scheint es genau das zu machen was es soll. Genial. Vielen Dank. Wie schließe ich jetzt die Anfrage?
Liebe Grüße
AW: Teil suchen und komplettes Wort markieren
16.12.2019 12:19:37
Pierre
Hallo,
eine andere Idee:
Füge 2 Befehlsschaltflächen aus den ActiveX-Steuerelementen ein und füge folgende Codes unter dem entsprechenden Tabellenblatt ein:
Private Sub CommandButton1_Click()
Dim c As Range
Dim suchBegriff As String
suchBegriff = InputBox("Rechnungsnummer eingeben")    'Text ggfls. anpassen
Set c = Worksheets("Tabelle1").Range("D:D").Find(suchBegriff, LookIn:=xlValues, LookAt:=xlWhole) _
'Suchspalte evtl. anpassen
For Each c In Worksheets("Tabelle1").UsedRange     'Blattnamen ggfls. anpassen
If Left(c.Value, 2) = suchBegriff Then
c.Interior.Color = vbRed
End If
Next c
End Sub
Private Sub CommandButton2_Click()
Range("D:D").ClearFormats      'Spalte evtl. anpassen
End Sub
Button 1 färbt dir alle Zellen rot (kann auch geändert werden), die mit der eingegebenen Zahl beginnen.
Button 2 löscht die Färbung wieder.
Heißt, nachdem du z. B. nach Rg-Nr. 71 gesucht hast, klickst du erst auf Button 2 und suchst anschließend z. B. nach 72.
Ansonsten hättest du beides rot eingefärbt.
Gruß Pierre
Anzeige
AW: Teil suchen und komplettes Wort markieren
16.12.2019 12:38:35
Ich
Vielen Dank. Leider funktioniert das nicht, bzw. ist nicht das was ich suche. Denn hier muss ich ja schon die komplette Rechnungsnummer wissen und dann wäre auch die komplette Zelle markiert. Ich suche aber nach Rechungsnummern, welche ich jetzt noch nicht vollständig kenne, ich aber weiß das sie mit 70... beginnt und dann 6 stellig ist. Damit ich diese leicht im kompletten Kostoauszug sehen kan, soll dann nur diese 6 stellige Zahl in roten Buchstaben erscheinen. Das Makro von Nepumuk funktioniert an sich gut, wenn die Nummer alleine in einer Zelle steht. Sind aber weitere Wörter etc auch in der Zelle enthalten was ja sehr häufig in Kontoaoszügen und Verwendungszwecken vor kommt, funktioniert das leider nicht.
Anzeige
nicht ganz richtig ...
16.12.2019 13:06:11
Pierre
... denn du brauchst nur die ersten beiden Ziffern (also 70 oder 71 oder 72) einzugeben!
Das Makro sucht auch dann nur die Zellen raus, die mit 70, 71 oder 72 beginnen.
Zugegeben, den Fall, dass z. B. noch "RG" oder was auch immer vor der eigentlichen Rechnungsnummer steht, kann das Makro nicht abfangen.
Übrigens: mit c.font.color statt c.interior.color färbst du die Schrift statt der "Hintergrundfarbe" ein.
Gruß Pierre
angepasst:
16.12.2019 14:24:04
Pierre
Hallo,
ich versuche es nochmal.
Basierend auf meinem vorherigen Lösungsvorschlag, folgendes unter dem Tabellenblatt als Code einfügen:
Option Explicit
Private Sub CommandButton1_Click()
Dim Zelle As Range
Dim Bereich As Range
Dim suchBegriff As String
suchBegriff = InputBox("Rechnungsnummer eingeben")
If suchBegriff = "" Then Exit Sub
Set Bereich = Range("D:D")
For Each Zelle In Bereich
If InStr(1, Zelle.Value, suchBegriff) > 0 Then
With Zelle.Characters(Start:=InStr(1, Zelle.Value, suchBegriff), _
Length:=Len(suchBegriff) + 4).Font
.ColorIndex = 3 ' rot
End With
End If
Next Zelle
End Sub
Private Sub CommandButton2_Click()
Range("D:D").Font.Color = vbBlack
End Sub
Nochmal zur Erklärung:
Du klickst in deiner Beispielmappe auf Button 1, gibst in dem sich öffnenden Fenster 70 ein (sonst nichts!), bestätigst und dann werden dir ausschließlich die Rechnungsnummern beginnend mit 70 ein (er färbt immer nur 6 Stellen!).
Mit Klick auf Button 2 kannst du die Schrift wieder auf schwarz zurück setzen.
Gruß Pierre
PS: In deinem Fall würde ich nicht jede einzelne Möglichkeit - bei dir 70, 71, 72, und wer weiß, wie weit das noch führen wird in Zukunft - für sich behandeln.
Über eine Inputbox finde ich das Handling bei verschiedenen Suchbegriffen deutlich einfacher.
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige