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

error afhandeling

Status
Niet open voor verdere reacties.

RMSpan

Gebruiker
Lid geworden
17 mrt 2022
Berichten
82
Hoi allemaal
Opnieuw een vraagje, dit maal over error afhandeling, middels een macro/knop (Nieuw bestand) worden de gegevens in het huidige bestand gewist en wordt dit bestand opgeslagen onder dezelfde naam maar met het nieuwe jaar.
Dit gaat prima tot dat de gebruiker per vergissing opnieuw op de knop 'Nieuw bestand' klikt, dan krijg je van Excel de foutmelding dat het bestand al bestaat en of je deze wilt overschrijven, ja, annuleren, nee is de keuze dan.
Natuurlijk wordt er dan op annuleren of nee geklikt en krijg je vervolgens de foutmelding van VBA.

Hoe kan ik dit ondervangen?

Code:
Sub Delete_inkomsten_uitgaven()


' Delete  inkomsten/Uitgaven and create new Workbook Macro
Dim YrNr
YrNr = Year(Date)


    Worksheets("Inkomsten").Unprotect
    Worksheets("Uitgaven").Unprotect
        
            Application.Goto ActiveWorkbook.Sheets("Uitgaven").Range("F6")
                Range("F6:T400").Select
                Selection.Clear
        
            Application.Goto ActiveWorkbook.Sheets("Inkomsten").Range("F6")
                Range("F6:T400").Select
                Selection.Clear
        
        Application.Goto ActiveWorkbook.Sheets("Dashboard").Range("L5")
        Range("L5") = YrNr
    
    Worksheets("Inkomsten").Protect
    Worksheets("Uitgaven").Protect
        
'Create new workbook for next year
     ActiveWorkbook.SaveAs FileName:="/Users/homecare/Documents/Geertje 2/" & "Geertje Hoogendoorn" & " " & YrNr & ".xlsm"
      
End Sub

bestand weer bijgevoegd
 

Bijlagen

Ik heb geen Mac en geen idee waarom je al die lege regels en vreemde inspringpunten gebruikt.
Maar maak er eens dit van:
Code:
Sub Delete_inkomsten_uitgaven()
    [COLOR="#008000"]'Delete  inkomsten/Uitgaven and create new Workbook Macro[/COLOR]
    Sheets("Inkomsten").Unprotect
    Sheets("Uitgaven").Unprotect
    
    Sheets("Uitgaven").Range("F6:T400").Clear
    Sheets("Inkomsten").Range("F6:T400").Clear
    Sheets("Dashboard").Range("L5") = Year(Date)
    
    Sheets("Inkomsten").Protect
    Sheets("Uitgaven").Protect
    
    [COLOR="#008000"]'Create new workbook for next year[/COLOR]
    On Local Error Resume Next
    ActiveWorkbook.SaveAs FileName:="/Users/homecare/Documents/Geertje 2/Geertje Hoogendoorn " & Year(Date) & ".xlsm"
End Sub

Of dit op een Mac ook werkt weet ik niet maar kan je gebruiken in plaats van die On Local Error opdracht:
Code:
[COLOR="#008000"]'Create new workbook for next year[/COLOR]
NewFile = "/Users/homecare/Documents/Geertje 2/Geertje Hoogendoorn " & Year(Date) & ".xlsm"
If Dir(NewFile) = "" Then ActiveWorkbook.SaveAs Filename:=NewFile
 
Laatst bewerkt:
Hallo edmoor

Bedankt voor je inbreng, ik heb de eerste code gebruikt en die werkt prima, tevens ziet het er zo geordender uit
Ja door mijn beperkte kennis van VBA in Excel gebruik ik her en der waarschijnlijk wat teveel code regels, dus ook bedankt voor de "opruiming"
 
Voor mij blijft het de vraag of iets wel of niet op een Mac zal werken.
Dus ik leer er ook van :)
 
Heb voor je ook even je tweede code getest, maar die werkt niet goed.
Ik krijg geen melding dat er al een bestand met die naam bestaat.

Verder heb ik nog een regel gewijzigd omdat ik in de sheet " dashboard" wil uitkomen in het nieuwe bestand en niet op de sheet inkomsten.

Code:
Sub Delete_inkomsten_uitgaven()
    'Delete  inkomsten/Uitgaven and create new Workbook Macro
    Sheets("Inkomsten").Unprotect
    Sheets("Uitgaven").Unprotect
    
    Sheets("Uitgaven").Range("F6:T400").Clear
    Sheets("Inkomsten").Range("F6:T400").Clear
    
    Application.Goto ActiveWorkbook.Sheets("Dashboard").Range("L5")
    Range("L5") = Year(Date)
    
    Sheets("Inkomsten").Protect
    Sheets("Uitgaven").Protect
    
    'Create new workbook for next year
    On Local Error Resume Next
    ActiveWorkbook.SaveAs FileName:="/Users/homecare/Documents/Geertje 2/Geertje Hoogendoorn " & Year(Date) & ".xlsm"






End Sub
 
Die 2e code kijkt of het bestand al bestaat en als dat zo is slaat hij geen nieuwe op.
Dus dan ook geen melding.
 
@Edmoor,
als ik google op "on local error", dan krijg ik daar verwijzigen naar oude vragen (<2010) en de opmerking "verouderd".
Hebben ze het mis of heb je up-to-date info over die "local" ?
 
Het kan obsolete zijn maar ik gebruik het altijd als ik wil dat een eenmaal ingestelde On Error alleen geldt voor de routine waarin hij is gezet.
Zoals gezegd, ik weet niet of dat nog nodig is.
 
hoe local is local ? Bij deze test ik binnen dezelfde module en is er geen verschil tss één zonder local en één met local
Code:
Sub test()
     On Error Resume Next
     'On Local Error Resume Next
     test2
     MsgBox Err.Number & vbLf & Err.Description
End Sub

Sub test2()
     Set wb = Workbook.Open("text.xlsb")     'dit moet een fout geven
End Sub
 
Die local betekent binnen de sub waarin dat gebruikt is.
Of het nog nodig is weet ik niet.
Ik wacht je testen af ;)
 
testen, nee, ik schrik dat het zo werkt en zo leer je ook nog eens iets ...
Een grapje, waarvan ik dacht, dat kan toch niet ...
Code:
Sub test()
     On Error GoTo fout
     'On Local Error Resume Next
     test1
     MsgBox Err.Number & vbLf & Err.Description
     Exit Sub
fout:
     MsgBox "fout"
End Sub

Sub test1()
     test2
End Sub

Sub test2()
     Set wb = Workbook.Open("text.xlsb")     'dit moet een fout geven
     MsgBox " test2'"
End Sub
 
Dan zit 'ie er dus alleen nog in voor backwards compatibility.
 
bedankt heren !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan