ElseIf wird umgangen ?!

Bild

Betrifft: ElseIf wird umgangen ?!
von: Lukas
Geschrieben am: 26.06.2015 08:42:09

Hallo zusammen,
komme bei folgendem Problem nicht weiter.
Das Makro durchläuft immer nur die IF-Bedingung (MAe5) und springt dann direkt auf die Else-Bedingung (Puffer).
Liegt es am Code, dass die Elseif-Bedingung nicht durchlaufen wird?

Sub Eingabe()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        
    Dim Typ As String
    Dim suche As Range
    Dim SapNr As String
    Dim Menge As Integer
    Dim Ende As Long
    Dim Bereich As Range, zelle As Range
   
                        
                        
            Sheets("Zwischenspeicher").Activate
      
            Typ = Range("B2").Value     'Typ Variable zuweisen
            Menge = Range("C2").Value   'Menge Variable zuweisen
            SapNr = Range("A2").Value   'SapNr Variable zuweisen
    
'Abfrage auf Vorgabeliste, ob MAE5 freie Kapazität hat
            Sheets("Vorgabeliste").Activate
            
            
            'MAE5
    
            If Range("C3").Value < 3000 Then
       
            'Abfrage ob Typ in der Datenliste abgespeichert ist
         
                Set suche = Sheets("TypenAnlagen").Range("P:P").Find(Typ, LookIn:=xlValues,  _
LookAt:=xlWhole)
    
                If Not suche Is Nothing Then
             
                     
            'In Vorgabeliste eintragen
            
                    Sheets("Vorgabeliste").Activate
            
            'letzte benutzte Zelle in Spalte MAE5 Typ finden
            
                    With ActiveSheet
                    Ende = .Cells(Rows.Count, 2).End(xlUp).Row
                    End With
            
            'Werte eintragen
        
                    Cells(Ende + 1, 1).Value = SapNr
                    Cells(Ende + 1, 2).Value = Typ
                    Cells(Ende + 1, 3).Value = Menge
                
            'Zwischenspeicher leeren für nächsten Wert
                    Sheets("Zwischenspeicher").Activate
                             
                    Rows("2:2").Select
                    Selection.Delete Shift:=xlUp
                
                    Sheets("Vorgabeliste").Activate
                               
                    If Range("C3").Value >= 3000 Then
                    
                        Korrekturwert = Range("C3").Value
                        Übertrag = Korrekturwert - 3000
                                                        
                        'letzte benutzte Zelle im Puffer finden
            
                        With ActiveSheet
                        Ende = .Cells(Rows.Count, 23).End(xlUp).Row
                        End With
            
                        'Werte in Puffer eintragen
        
                        Cells(Ende + 1, 22).Value = SapNr
                        Cells(Ende + 1, 23).Value = Typ
                        Cells(Ende + 1, 24).Value = Übertrag
                        
                        'Wert MAE5 korrigieren
                        
                        With ActiveSheet
                        Ende = .Cells(Rows.Count, 3).End(xlUp).Row
                        End With
                    
                        Korrektur = Cells(Ende, 3).Value - Übertrag
                        Cells(Ende, 3).Value = Korrektur
                    
                    End If
                                              
                End If
                
                
        'Umstieg auf MAE4
            
            ElseIf Range("C3").Value >= 3000 And Range("G3").Value < 0 Then
            
            
                Set suche = Sheets("TypenAnlagen").Range("M:M").Find(Typ, LookIn:=xlValues,  _
LookAt:=xlWhole)
    
                If Not suche Is Nothing Then
             
                     
            'In Vorgabeliste eintragen
            
                    Sheets("Vorgabeliste").Activate
            
            'letzte benutzte Zelle in Spalte MAE4 Typ finden
            
                    With ActiveSheet
                    Ende = .Cells(Rows.Count, 6).End(xlUp).Row
                    End With
            
            'Werte eintragen
        
                    Cells(Ende + 1, 5).Value = SapNr
                    Cells(Ende + 1, 6).Value = Typ
                    Cells(Ende + 1, 7).Value = Menge
                
            'Zwischenspeicher leeren für nächsten Wert
                    Sheets("Zwischenspeicher").Activate
                             
                    Rows("2:2").Select
                    Selection.Delete Shift:=xlUp
                
                    Sheets("Vorgabeliste").Activate
                               
                    If Range("G3").Value >= 3000 Then
                    
                        Korrekturwert = Range("G3").Value
                        Übertrag = Korrekturwert - 3000
                                                        
                        'letzte benutzte Zelle im Puffer finden
            
                        With ActiveSheet
                        Ende = .Cells(Rows.Count, 23).End(xlUp).Row
                        End With
            
                        'Werte in Puffer eintragen
        
                        Cells(Ende + 1, 22).Value = SapNr
                        Cells(Ende + 1, 23).Value = Typ
                        Cells(Ende + 1, 24).Value = Übertrag
                        
                        'Wert MAE5 korrigieren
                        
                        With ActiveSheet
                        Ende = .Cells(Rows.Count, 3).End(xlUp).Row
                        End With
                    
                        Korrektur = Cells(Ende, 3).Value - Übertrag
                        Cells(Ende, 3).Value = Korrektur
                    
                    End If
                                              
                End If
            
            
            
            'Umstieg auf Puffer
            Else
                     
                    'In Vorgabeliste eintragen
            
                        Sheets("Vorgabeliste").Activate
            
                'letzte benutzte Zelle in Spalte 2 finden
            
                        With ActiveSheet
                        Ende = .Cells(Rows.Count, 23).End(xlUp).Row
                        End With
            
                'Werte eintragen
        
                        Cells(Ende + 1, 22).Value = SapNr
                        Cells(Ende + 1, 23).Value = Typ
                        Cells(Ende + 1, 24).Value = Menge
                    
                'Zwischenspeicher leeren für nächsten Wert
            
                        Sheets("Zwischenspeicher").Activate
                             
                        Rows("2:2").Select
                        Selection.Delete Shift:=xlUp
                        
                        Sheets("Vorgabeliste").Activate
                                
            
            End If
                
                
            
       
        
            
        
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
End Sub

Bild

Betrifft: AW: ElseIf wird umgangen ?!
von: Rudi Maintaire
Geschrieben am: 26.06.2015 09:58:29
Hallo,
trifft And Range("G3").Value < 0 denn zu?
Außerdem ist der erste Teil der ElseIf-Bedingung überflüssig.
Es reicht
ElseIf Range("G3").Value < 0 Then
denn wenn C3 nicht kleiner als 3000 ist, muss es ja größer sein.
Es gibt noch andere Unlogiken.
z.B. hast du im Zweig

'MAE5
If Range("C3").Value < 3000 Then

eine Abfrage
If Range("C3").Value >= 3000 Then
Gruß
Rudi

Bild

Betrifft: AW: ElseIf wird umgangen ?!
von: Lukas
Geschrieben am: 26.06.2015 10:24:48
Super! Vielen Dank!
Man sieht manchmal den Wald vor lauter Bäumen nicht.
Gruß
Lukas

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeitraum überprüfen"