• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Foutmelding Else zonder If

Status
Niet open voor verdere reacties.

Gijsbert1960

Gebruiker
Lid geworden
5 jul 2017
Berichten
140
Hallo Allemaal

Ik heb een formule aangepast en krijg verschillende foutmeldingen 1 daarvan is Else zonder If of End If zonder blok If en kom er niet uit wat ik fout doe. Hier onder de formule

Code:
Sub Nieuwe_reis()
With Sheets("INVUL")
    If .Range("A1") = 1 Then
      If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbYes Then
Application.Run "Verplaats_test"
    .Range("C1:C7").ClearContents
    .Range("C9:C15").ClearContents
    .Range("C17:C23").ClearContents
    .Range("F2:F4").ClearContents
    .Range("F10:F12").ClearContents
    .Range("F18:F20").ClearContents
    .Range("I1:I7").ClearContents
    .Range("I9:I15").ClearContents
    .Range("I17:I23").ClearContents
    .Range("L2:L4").ClearContents
    .Range("L10:L12").ClearContents
    .Range("L18:L20").ClearContents
    .Range("AL20:AL31").ClearContents
    .Range("AG46:AL54").ClearContents
    .Range("BA45:BC45").ClearContents
    .Range("A1").ClearContents
With Sheets("ABC kiezen")
    .Range("AA2:AA13").ClearContents
With Sheets("DEF kiezen")
    .Range("AA2:AA13").ClearContents
With Sheets("Stuwplan")
    .Range("W21:W24").ClearContents
    .Range("O48:U49").ClearContents
.Range("W27:W39") = .Range("X26").Value
.Range("X27:X39") = .Range("X26").Value
With Sheets("Ladingboek-ABC")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
With Sheets("Ladingboek-DEF")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
   
    If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbNo Then
    Sheets("INVUL").Range("A1").ClearContents
        End If
      End If
    End If
  End With
  End With
  End With
  End With
  End With
  End With
End Sub

Is er iemand die mij kan vertellen wat ik fout doe.

M vr gr
Gijs
 
Als je inspringpunten op de juiste posities gebruikt dan zie je vanzelf wat er niet klopt.
Daar zijn inspringpunten voor.
Nu is het wat dat betreft een zooitje.
 
Laatst bewerkt:
Veel, maar begin eens een met het eindigen van een With met End With en dit niet allemaal onderaan op te sommen. Laat de code inspringen zodat je zit wat onder welk statement valt.

Code:
Sub Nieuwe_reis()
With Sheets("INVUL")
    If .Range("A1") = 1 Then
        If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbYes Then
            Application.Run "Verplaats_test"
            .Range("C1:C7").ClearContents
            .Range("C9:C15").ClearContents
            .Range("C17:C23").ClearContents
            .Range("F2:F4").ClearContents
            .Range("F10:F12").ClearContents
            .Range("F18:F20").ClearContents
            .Range("I1:I7").ClearContents
            .Range("I9:I15").ClearContents
            .Range("I17:I23").ClearContents
            .Range("L2:L4").ClearContents
            .Range("L10:L12").ClearContents
            .Range("L18:L20").ClearContents
            .Range("AL20:AL31").ClearContents
            .Range("AG46:AL54").ClearContents
            .Range("BA45:BC45").ClearContents
            .Range("A1").ClearContents
        End If
    End If
End With
Sheets("ABC kiezen").Range("AA2:AA13").ClearContents
Sheets("DEF kiezen").Range("AA2:AA13").ClearContents
With Sheets("Stuwplan")
    .Range("W21:W24").ClearContents
    .Range("O48:U49").ClearContents
    .Range("W27:W39") = .Range("X26").Value
    .Range("X27:X39") = .Range("X26").Value
End With
With Sheets("Ladingboek-ABC")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
End With
With Sheets("Ladingboek-DEF")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
End With
If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbNo Then
    Sheets("INVUL").Range("A1").ClearContents
End If

End Sub

En het is verder een gok wat je onder de bovenste If wilt laten vallen.
 
Laatst bewerkt:
Range legen kan b.v.b. ook zo,
Code:
  Range("K6,K7,K9,K12,K15,K17,K21").ClearContents
 
Hallo SjonR

De formule werkt maar kom er achter dat hij 2x de msgbox toont. Ik denk dat dat komt door de 2e code If msgbox voor nee want bij de eerste staat geen code voor als er Nee geklikt wordt. Als dat gebeurt dan alleen Cel A1 Clear Contents vandaar de If Msgbox op einde formule. Met Else ervoor krijg ik melding Else zonder If
Code:
Sub Nieuwe_reis()
With Sheets("INVUL")
    If .Range("A1") = 1 Then
        If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbYes Then
            Application.Run "Verplaats_test"
            .Range("C1:C7").ClearContents
            .Range("C9:C15").ClearContents
            .Range("C17:C23").ClearContents
            .Range("F2:F4").ClearContents
            .Range("F10:F12").ClearContents
            .Range("F18:F20").ClearContents
            .Range("I1:I7").ClearContents
            .Range("I9:I15").ClearContents
            .Range("I17:I23").ClearContents
            .Range("L2:L4").ClearContents
            .Range("L10:L12").ClearContents
            .Range("L18:L20").ClearContents
            .Range("AL20:AL31").ClearContents
            .Range("AG46:AL54").ClearContents
            .Range("BA45:BC45").ClearContents
            .Range("A1").ClearContents
        End If
    End If
End With
Sheets("ABC kiezen").Range("AA2:AA13").ClearContents
Sheets("DEF kiezen").Range("AA2:AA13").ClearContents
With Sheets("Stuwplan")
    .Range("W21:W24").ClearContents
    .Range("O48:U49").ClearContents
    .Range("W27:W39") = .Range("X26").Value
    .Range("X27:X39") = .Range("X26").Value
End With
With Sheets("Ladingboek-ABC")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
End With
With Sheets("Ladingboek-DEF")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
End With
Else
If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbNo Then
    Sheets("INVUL").Range("A1").ClearContents
End If

End Sub

Maar na Else komt toch een If of zie ik dat verkeerd. Dus wat doe ik dan verkeerd want ik zie het niet.

M vr gr
Gijs
 
Je hebt nog steeds de inspringpunten niet in orde.
 
Hallo edmoor

Ik hoop dat U nu de inspringpunten in orde vindt, ik kom aan de formule door te zoeken en kijken maar als je zoekt op If of Else vindt je niets. Krijg bij deze code de foutmelding Else zonder If of zonder blok en kom er niet uit.

Code:
Sub Nieuwe_reis()
With Sheets("INVUL")
    If .Range("A1") = 1 Then
        If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbYes Then
            Application.Run "Verplaats_test"
            .Range("C1:C7").ClearContents
            .Range("C9:C15").ClearContents
            .Range("C17:C23").ClearContents
            .Range("F2:F4").ClearContents
            .Range("F10:F12").ClearContents
            .Range("F18:F20").ClearContents
            .Range("I1:I7").ClearContents
            .Range("I9:I15").ClearContents
            .Range("I17:I23").ClearContents
            .Range("L2:L4").ClearContents
            .Range("L10:L12").ClearContents
            .Range("L18:L20").ClearContents
            .Range("AL20:AL31").ClearContents
            .Range("AG46:AL54").ClearContents
            .Range("BA45:BC45").ClearContents
            .Range("A1").ClearContents
        End If
    End If
End With
Sheets("ABC kiezen").Range("AA2:AA13").ClearContents
Sheets("DEF kiezen").Range("AA2:AA13").ClearContents
With Sheets("Stuwplan")
    .Range("W21:W24").ClearContents
    .Range("O48:U49").ClearContents
    .Range("W27:W39") = .Range("X26").Value
    .Range("X27:X39") = .Range("X26").Value
End With
With Sheets("Ladingboek-ABC")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
End With
With Sheets("Ladingboek-DEF")
    .Range("I15:I20").ClearContents
    .Range("A27:G29").ClearContents
    .Range("A35:K37").ClearContents
End With
Else
With Sheets("INVUL")
    If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbNo Then
       Sheets("INVUL").Range("A1").ClearContents
    End If
End With
End Sub

Met Else wil ik bereiken dat als bij de eerste msgbox nee wordt gedrukt alleen cel A1 wordt gewist en terug naar invul.

M vr gr
Gijs
 
Het gaat er niet om of ik het in orde vind maar de VBA compiler.
Die laatste Else hoort er niet in.
 
ik veronderstel dat je dit wenst
Code:
Sub Nieuwe_reis()
    With Sheets("INVUL")
        If .Range("A1") = 1 Then
            If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbYes Then
                Application.Run "Verplaats_test"
                .Range("C1:C7,C9:C15,C17:C23,F2:F4,F10:F12,F18:F20,I1:I7,I9:I15,I17:I23,L2:L4,L10:L12,L18:L20,AL20:AL31,AG46:AL54,BA45:BC45,A1").ClearContents
                Sheets("ABC kiezen").Range("AA2:AA13").ClearContents
                Sheets("DEF kiezen").Range("AA2:AA13").ClearContents
                With Sheets("Stuwplan")
                    .Range("W21:W24,O48:U49").ClearContents
                    .Range("W27:W39") = .Range("X26").Value
                    .Range("X27:X39") = .Range("X26").Value
                End With
                Sheets("Ladingboek-ABC").Range("I15:I20,A27:G29,A35:K37").ClearContents
                Sheets("Ladingboek-DEF").Range("I15:I20,A27:G29,A35:K37").ClearContents
            Else
                .Range("A1").ClearContents
            End If
        End If
    End With
End Sub
ivm inspringpunten, installeer desnoods "smart intender" als add-in, die vergemakkelijkt alles een stuk in verband hiermee
 
A1 moest altijd gewist worden als die 1 was
Code:
Sub Nieuwe_reis()
    With Sheets("INVUL")
        If .Range("A1") = 1 Then
            If MsgBox("Nieuwe Reis", vbYesNo, "Wilt U een nieuwe Reis maken!") = vbYes Then
                Application.Run "Verplaats_test"
                .Range("C1:C7,C9:C15,C17:C23,F2:F4,F10:F12,F18:F20,I1:I7,I9:I15,I17:I23,L2:L4,L10:L12,L18:L20,AL20:AL31,AG46:AL54,BA45:BC45").ClearContents
                Sheets("ABC kiezen").Range("AA2:AA13").ClearContents
                Sheets("DEF kiezen").Range("AA2:AA13").ClearContents
                With Sheets("Stuwplan")
                    .Range("W21:W24,O48:U49").ClearContents
                    .Range("W27:W39") = .Range("X26").Value
                    .Range("X27:X39") = .Range("X26").Value
                End With
                Sheets("Ladingboek-ABC").Range("I15:I20,A27:G29,A35:K37").ClearContents
                Sheets("Ladingboek-DEF").Range("I15:I20,A27:G29,A35:K37").ClearContents
            End If
            .Range("A1").ClearContents                               'A1 moet altijd gewist worden
        End If
    End With
End Sub
 
In een paar regels code verwijs je al naar 6 werkbladen.

Gebruik een userform voor de gebruikersinvoer
Gebruik 1 werkblad om de gebuikersinvoer op te slaan.
Gebruik desnoods 1 werkblad om gefilterde gegevens uit de opgeslagen gebruikersinvoer in een bepaalde layout weer te geven.
Ergo: meer dan 2 werkbladen heb je niet nodig.
 
Hallo cow18 edmoor en snb

De 2e code van cow18 werkt perfect. bedankt. edmoor waar vindt ik de VBA compiler en wat doet hij en wordt hij voor gebruikt. snb van Userform weet ik niets en dat zal misschien makelijker werken maar ik zou niet weten hoe ik mijn bestand in excel daar in moet verwerken om hetzelfde te krijgen als wat ik nu heb. mijn bestand is nu 4463kb groot en zal nog groter worden door alle pepieren en regels waar we in de binnenvaart aan moeten voldoen voor / tijdens en na de reis.

Allen bedankt voor de reactie's

M vr gr
Gijs
 
De compiler doet z'n werk automatisch, maar je kan het altijd zelf starten d.m.v. de menukeuze: Foutopsporing > VBAproject compileren.
Die compiler controleert of je syntax wel in orde is.
 
Als het goed is kun je de VBA complier niet vinden.
Die zorgt ervoor dat jouw code goed wordt uitgevoerd.
Hoef jij alleen maar goede code te schrijven. ;)


De verwachte grootte van je bestand is een extra argument om mijn suggestie te implementeren.
Plaats eens een voorbeeld met anonieme gegevens, dan kunnen we je laten zien hoe je een userform kunt gebruiken in plaats van invoer via een werkblad.
 
Hallo edmoor en snb

edmoor bedankt voor de uitleg. En snb ik zal dat eens doen hoe groot mag het bestand zijn en hoe moet ik het zippen. Dan haal ik de info er uit en plaats het hier.

M vr gr
Gijs
 
Hou het zo klein mogelijk, maar groot genoeg om je vraag mee te illustreren. Per werkblad bijv. 10 regels gegevens.
Ieder Excelbestand kan hier geplaatst worden. Zippen is niet nodig.
 
omzetten naar Userform

Hallo snb

iIk heb er lang over gedaan om het bestand te plaatsen maar moest eerst een aanpassing doen om lospapieren te maken en gevoelige info te verwijderen. Tevens nog examens moeten doen (je bent nooit te oud om te leren) Ik weet niets van Userforms en het geplaatste bestand is nog niet compleet er komen nog bladen bij. Ik heb allen wachtwoorden verwijderd U kunt beter even kijken wat voor bladen er zijn en hoe het ongeveer nu werkt alleen voorraad en filterwissel werkt nog niet helemaal ben ik nog mee bezig om naar juiste cellen te zetten. Ik ben benieuwd hoe zo een userform gaat werken en in elkaar zit. Ik heb het bestand gezipt anders kon ik hem na verschillende pogingen niet uploaden.

Bekijk bijlage 331920

M vr gr
Gijs
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan