Microsoft Excel

Herbers Excel/VBA-Archiv

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

application.findformat

Betrifft: application.findformat von: Holger
Geschrieben am: 25.09.2020 12:31:15

Hallo,

ich möchte einen Bereich nach einer Zelle mit einem Unterstrich durchsuchen
Folgende Prozedur bringt jedoch nicht das gewünschte Ergebnis. Suche ich nach einem FontStyle funktioniert der Code jedoch, nicht jedoch für LineStyles.
In Excel selbst funktioniert die Suche, durch Application.FindFormat.Clear wird jedoch die Eingabe durch Excel gelöscht.


Sub FindLineStyle()
    
    Dim rg As Range
    
    Range("A4").Select
    Debug.Print "LineStyle before set = " & Range("A4").Borders(xlEdgeBottom).LineStyle
    Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
    Debug.Print "LineStyle after set = " & Range("A4").Borders(xlEdgeBottom).LineStyle

    
    Application.FindFormat.Clear
    Range("A1:A9").Select
    Application.FindFormat.Borders(xlEdgeBottom).LineStyle = xlContinuous
    Set rg = Selection.Find(What:="", SearchFormat:=True)
    If Not rg Is Nothing Then
        Debug.Print rg.row
    Else
        Debug.Print "LineStyle after search = " & Range("A4").Borders(xlEdgeBottom).LineStyle
    End If
    
    Range("A4").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
    Debug.Print vbCrLf
    
    
End Sub


Vielen Dank im Voraus.

Gruß Holger

Betrifft: AW: application.findformat
von: Yal
Geschrieben am: 25.09.2020 16:45:04

Hallo Holger,

erkläre bitte mit einfachen Worte, was Du ermitteln möchte:
_ die Adresse aller Zellen, die nur eine untere Rahmelinie (xlEdgeBottom) haben
_ die Adresse aller Zellen, die midestens eine untere Rahmelinie (xlEdgeBottom) haben
_ ...

VG Yal

Betrifft: AW: application.findformat
von: Beverly
Geschrieben am: 25.09.2020 17:09:44

Hi Holger,

vielleicht so:
    With Application.FindFormat.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=True).Activate


Betrifft: Ergänzung
von: Beverly
Geschrieben am: 25.09.2020 17:12:59

Bzw. wenn du die Adresse der Zelle benötigst, dann so:
Sub FormatSuchen()
    Dim rngZelle As Range
    With Application.FindFormat.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    Set rngZelle = Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=True)
    MsgBox rngZelle.Address
End Sub

GrußformelBeverly's Excel - Inn

Betrifft: AW: Ergänzung
von: Holger
Geschrieben am: 28.09.2020 10:01:14

Hallo Beverly,
danke für deine Mühe. Dein Vorschlag würde funktionieren, solange ich Application.findformat.clear nicht benutze. Da ich an unterschiedlichen Stellen nach unterschiedlichen Formatierungen suche, muss ich jedoch Application.findformat.clear benutzen. Inzwichen hat mir ein User in einem anderen Forum bestätigt, das in "Findformat der Wurm drin ist". (siehe: https://www.vba-forum.de/View.aspx?ziel=61926-Application.FindFormat_LineStyle)

Gruß Holger