Suche beenden, wenn nichts mehr vorhanden
#1
Moin zusammen,
 
ich habe vor Ewigkeiten mal an einer Bestandsliste gefummelt und ihr habt mir dabei schon geholfen. Jetzt bekomme ich, nach einem Jahr, das Problem, das wir von einigen Modellen keine Rahmengrößen mehr besitzen. Laut VBA sucht er so lange, bis das Feld der Seriennummer frei ist. Das wird zum Verhängnis, da er es dann beim der anderen und vorallem falschen Rahmengröße einträgt.
Wie kann man den Code so umschreiben, dass er bei fehlenden Kriterien einfach eine Meldung bringt das nichts mehr davon da ist? Ich weiß das man in der Do Until Zeile etwas verändern muss, aber mein VBA wissen ist gerade so super beschränkt.
 
Über eure Hilfe würde ich mich sehr freuen und bedanke mich im Voraus bei euch!
 
Code:
Private Sub MkListFilter1(ByVal Md As String, ByVal FS As String, _
  ByVal FrmNbr As Variant, ByVal SysNbr As Variant, ByVal State As String, ByVal Booking As String)
Dim Rw As Range
  With Sheets("Lagerbestand")
     With .ListObjects(1)
        .AutoFilter.ShowAllData
        With .Range
           .AutoFilter Field:=2, Criteria1:=Md
           .AutoFilter Field:=3, Criteria1:=FS
           .AutoFilter Field:=4, Criteria1:="storing"
        End With
        Set Rw = .DataBodyRange.SpecialCells(xlCellTypeVisible).Rows(1)
        Do Until Rw.Cells(8) = "" And Rw.Cells(7) = ""
           Set Rw = Rw.Offset(1)
        Loop
         
        Rw.Cells(8).Value = SysNbr
        Rw.Cells(7).Value = FrmNbr
        Rw.Cells(4).Value = State
        Rw.Cells(18).Value = Booking
         
        .AutoFilter.ShowAllData
     End With
  End With

End Sub
Antworten Top
#2
Hallo

ohne den Code jetzt testen zu können sehe ich das nach Set der Fehlerfall das kein Range gefunden wird nicht abgefangen wurde.  
Setze bitte mal den Befehl dazwischen:  If Rw is Nothing Then Exit Sub   oder als Sprung   If Rw is Nothing Then GoTo AFON
Der erste Befehl beendet das Programm sofort, Sprung zum Autofilter ist erforderlich wenn der Filter zum Schluss eingeschaltet werden muss!!  
Ich denke damit sollte der Fehler behoben sein. 

mfg Gast 123

Code:
Private Sub MkListFilter1(ByVal Md As String, ByVal FS As String, _
 ByVal FrmNbr As Variant, ByVal SysNbr As Variant, ByVal State As String, ByVal Booking As String)
Dim Rw As Range
 With Sheets("Lagerbestand")
    With .ListObjects(1)
       .AutoFilter.ShowAllData
       With .Range
          .AutoFilter Field:=2, Criteria1:=Md
          .AutoFilter Field:=3, Criteria1:=FS
          .AutoFilter Field:=4, Criteria1:="storing"
       End With
       Set Rw = .DataBodyRange.SpecialCells(xlCellTypeVisible).Rows(1)
       
       If Rw Is Nothing Then Exit Sub    'oder mit Sprungbefehl
       If Rw Is Nothing Then GoTo AFON   'Autofiltr einschalten!
       
       Do Until Rw.Cells(8) = "" And Rw.Cells(7) = ""
          Set Rw = Rw.Offset(1)
       Loop
       
       Rw.Cells(8).Value = SysNbr
       Rw.Cells(7).Value = FrmNbr
       Rw.Cells(4).Value = State
       Rw.Cells(18).Value = Booking
       
AFON:  .AutoFilter.ShowAllData
    End With
 End With

End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste