Microsoft Excel

Herbers Excel/VBA-Archiv

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

For...Next beschleunigen

Betrifft: For...Next beschleunigen von: Clara
Geschrieben am: 20.10.2020 13:22:14

Hello:)

kann man das hier noch irgendwie beschleunigen, wenn der Fall eintritt, dass der zu suchenden Inhalt in B:B nicht vorhanden ist?

Sub AufzeigenSuche()
    Dim rngSearch As Range
    
    For Each rngSearch In ActiveSheet.Columns("B:B").Cells
        If Range("C4").Value = "" Then
            Range("C4").Select
            MsgBox "Bitte Nummer des Anlageguts eingeben oder, falls nicht vorhanden, neue  _
Anlage erstellen.", 64
            Exit For
            ElseIf rngSearch = Range("C4") Then
            rngSearch.Activate
            Exit For
        End If
    Next
    
End Sub
Bisher läuft es gut, wenn (i) der Inhalt vorhanden ist (bis dato aber auch lediglich ca 100 Zeilen zu durchsuchen, kann aber enorm anwachsen) oder wenn (ii) C4 = "".

LG

Betrifft: AW: For...Next beschleunigen
von: max.kaffl@gmx.de
Geschrieben am: 20.10.2020 13:37:04

Hallo Clara,

teste mal:

Public Sub AufzeigenSuche()
    
    Dim rngSearch As Range
    
    If IsEmpty(Range("C4").Value) Then
        Range("C4").Select
        MsgBox "Bitte Nummer des Anlageguts eingeben oder, " & _
            "falls nicht vorhanden, neue Anlage erstellen.", vbInformation
    Else
        Set rngSearch = Columns(2).Find(What:=Range("C4").Value, _
            LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
        If Not rngSearch Is Nothing Then
            rngSearch.Select
            Set rngSearch = Nothing
        Else
            MsgBox Range("C4").Value & " nicht gefunden.", vbExclamation, "Hinweis"
        End If
    End If
End Sub

Gruß
Nepumuk

Betrifft: AW: For...Next beschleunigen
von: Clara
Geschrieben am: 20.10.2020 15:00:16

Ich weiß zwar nicht, warum das schneller ist bzw. besser funktioniert, aber es tut was es soll.

Danke Nepumuk!

Betrifft: AW: For...Next beschleunigen
von: UweD
Geschrieben am: 20.10.2020 13:39:44

Hallo

so??
Sub AufzeigenSuche()
    Dim Such As String
    Such = Range("C4").Value
    
    If Such = "" Then
        Range("C4").Select
        MsgBox "Bitte Nummer des Anlageguts eingeben oder, falls nicht vorhanden, neue " _
                   & "Anlage erstellen.", 64
                    
    Else
        If WorksheetFunction.CountIf(Columns(2), Such) > 0 Then
            Columns(2).Find(What:=Such, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext).Activate
        Else
            MsgBox Such & ": Nicht gefunden"
        End If
    End If
    
End Sub

LG UweD

Betrifft: Besten Dank Uwe owT
von: Clara
Geschrieben am: 20.10.2020 14:59:18



Betrifft: Danke für die Rückmeldung (owT)
von: UweD
Geschrieben am: 20.10.2020 15:42:35