VBA Excel Makro Zeilen markieren

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    VBA Excel Makro Zeilen markieren

    hi leute, ich probiere mehrere zeilen in excel zu markieren wenn ein bestimmter text enthalten ist.

    die textabfrage funktioniert wunderbar. habe auch schon ein laufendes makro, was mir die betreffenden zeilen löscht. funktioniert auch. jetzt habe ich es umgeschrieben, das er nicht löschen sondern markieren soll. geht auch bis zur ersten betreffenden zeile, danach hängt er sich auf.

    kann mir da jemand einen lösungsansatz geben?

    hier mein code:

    VB.NET-Quellcode

    1. Private Sub CommandButton4_Click()
    2. If Trim(TextBox1.Value) = vbNullString Or Trim(TextBox2.Value) = vbNullString Or Trim(TextBox3.Value) = vbNullString Then
    3. MsgBox ("Es müssen alle Felder ausgefüllt sein"), vbCritical
    4. Exit Sub
    5. End If
    6. Dim i As Long
    7. Dim letzteZeile As Long
    8. Dim suchBereich As Range
    9. Dim gefunden As Range
    10. Dim ersterTreffer As String
    11. Dim suchWert As String
    12. suchWert = TextBox2.Text 'hier kommt das suchwort rein
    13. With ThisWorkbook.Sheets(TextBox1.Text) 'hier kommt die arbeitsmappe in der gearbeitet wird rein
    14. letzteZeile = .Range(TextBox3.Text & Rows.Count).End(xlUp).Row
    15. Set suchBereich = .Range(TextBox3.Text & "1:" & TextBox3.Text & letzteZeile) 'hier wird die spalte in der gesucht werden soll eingetragen
    16. Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
    17. If Not gefunden Is Nothing Then
    18. ersterTreffer = gefunden.Address
    19. Do
    20. gefunden.Activate
    21. ActiveCell.EntireRow.Interior.ColorIndex = 8
    22. Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
    23. Loop While Not gefunden Is Nothing
    24. End If
    25. End With
    26. MsgBox ("Habe Fertig ;-)")
    27. End Sub


    danke schon mal im vorraus.
    - In Zeile 25 musst du mit FindNext arbeiten
    - Dein Code ist extrem anfällig, weil du dich auf Inhalte von Textboxen verlässt

    weedl89 schrieb:

    gefunden.Activate
    ActiveCell.EntireRow.Interior.ColorIndex = 8
    ist Murks.
    Ersetze das durch ​gefunden.EntireRow.Interior.ColorIndex = 8.
    Fast generell gültige Regel:
    Useraktionsbasierende Methoden und Objekt wie .Select, .Activate, ActiveSheet, ActiveCell, Selection sollten im Code nie verwendet werden.
    Bei Macro-Aufzeichnung kommt das zwar oft als Ergebnis raus, aber du bist schlauer als der Macro-Recorder und weisst, wie der Bereich direkt adressiert werden kann.

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()