• 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.

End With zonder With

Status
Niet open voor verdere reacties.

Wampie Beukies

Gebruiker
Lid geworden
7 sep 2009
Berichten
88
Hi All,

Bij de volgende code krijg ik de foutmelding "End With zonder With" , terwijl deze volgens mij keurig in paren staan.

Code:
Sub Opslaan()
'
' Opslaan Macro
'

'
    With Sheets("Verlofkaart")
        If Not Dir("E:\Scauting\Planning\" & (.Range("AI1")) & "\" & "Verlofplanning" & ".xlsm") <> "" Then
        MsgBox "Maak eerst een bestand 'verlofplanning' voor dit kalenderjaar!"
    End With
        Exit Sub
    With Sheets("Verlofkaart")
    Workbooks.Open Filename:="E:\Scauting\Planning\" & (.Range("AI1")) & "\" & "Verlofplanning.xlsm"
    End With
    Application.Run "Verlofplanning.xlsm!Unprotect"
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Windows("'Nieuwe ambulant'.xlsm").Activate
    With Sheets("Verlofkaart")
    Workbooks.Open Filename:="E:\Scauting\Planning\" & (.Range("AI1")) & "\Verlofplanning.xlsm", _
        UpdateLinks:=3
    End With
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Sheets("Verlofkaart").Select
    ActiveSheet.Unprotect
    Sheets("Verlofkaart").Copy After:=Workbooks("Verlofplanning.xlsm").Sheets(2)
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Range("A1:AH36").Select
    Selection.Copy
    Windows("Verlofplanning.xlsm").Activate
    Range("A1:AH36").Select
    ActiveSheet.Paste Link:=True
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Range("AI1:AM9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Verlofplanning.xlsm").Activate
    Range("AI1:AM9").Select
    ActiveSheet.Paste Link:=True
    Sheets("Verlofkaart").Select
    ActiveSheet.Name = Range("AJ1").Value
    Range("AJ1").Select
    Selection.ClearComments
    ActiveSheet.Shapes.Range(Array("Button 1")).Select
    Selection.Delete
    ActiveSheet.Protect
    ActiveSheet.Visible = False
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Sheets("Verlofkaart").Select
    ActiveSheet.Unprotect
    Range("AJ1").Select
    Selection.ClearComments
    ActiveSheet.Shapes.Range(Array("Button 1")).Select
    Selection.Delete
    Application.DisplayAlerts = True
    With Sheets("Verlofkaart")
    ActiveWorkbook.SaveAs Filename:="E:\Scauting\Planning\" & (.Range("AI1") & "\" & "Ambulanten" & "\" & (.Range("AJ1")) & ".xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End With
    ActiveSheet.Protect
    Windows("Ambulantenplanning.xlsm").Activate
    Sheets(Array("Ambulanten", "Planning", "Verlofkaart")).Select
    Sheets("Ambulanten").Activate
    ActiveWindow.SelectedSheets.Visible = False
    Application.DisplayAlerts = True
    End If
    
End Sub

Wat gaat hier mis?
 
Hi,


je IF wordt niet afgesloten door een END IF

Code:
With Sheets("Verlofkaart")
        If Not Dir("E:\Scauting\Planning\" & (.Range("AI1")) & "\" & "Verlofplanning" & ".xlsm") <> "" Then
        MsgBox "Maak eerst een bestand 'verlofplanning' voor dit kalenderjaar!"
[COLOR="#FF0000"]End If[/COLOR]
End With


je END IF staat net voor de End Sub. daar moet ie dan weg.
 
Laatst bewerkt:
En die
HTML:
End If
op het einde... Verder helpt het inspringen van de regels het overzichtelijk houden van de code.
 
En verwijder alle regels met 'select' en 'activate'
 
Als de End If daar staat, gaat hij sowieso naar Exit Sub. Dat moet hij alleen doen als het bestand nog niet bestaat.....
 
In plaats van

Code:
Sheets("Verlofkaart").Select
    ActiveSheet.Unprotect

Code:
Sheets("Verlofkaart").Unprotect

Maar beter nog: verwijder al die zinloze 'beveiligingen' en opheffing van die beveiliging.
 
Als de End If daar staat, gaat hij sowieso naar Exit Sub. Dat moet hij alleen doen als het bestand nog niet bestaat.....


dan wordt het zo:

Code:
With Sheets("Verlofkaart")
        If Not Dir("E:\Scauting\Planning\" & (.Range("AI1")) & "\" & "Verlofplanning" & ".xlsm") <> "" Then
                MsgBox "Maak eerst een bestand 'verlofplanning' voor dit kalenderjaar!"
        exit sub
        End If
End With
 
@lam

Waarom laat je VBA dan niet meteen dat bestand aanmaken ?
 
@snb
1. omdat daar niet omgevraagd werd.
2. omdat ik geen idee heb hoe het bestand verlofplanning eruit zou moeten zien
 
@snb Je tips en off-topic meedenken is niet perse verkeerd. Sommige dingen heb ik zelf ook al wel bedacht, maar mede omdat ik maar een knutselaar ben, wil ik het met kleine stapjes tegelijk doen. En de beveiliging is nodig, omdat anderen met dit bestand gaan werken, die er helemaal geen kaas van gegeten hebben.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan