Ik heb hier eens een macro voor (laten) maken, door 1 van de excel experts op helpmij.
Beetje verbouwd en enige uitleg:
In je document: extra> macro> Visual basic editor.
Linkerzijde: "This workbook". (dubbelklik)
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = True Then Exit Sub
If (Sheets("Apparaat").Range("K3") = "") Or (Sheets("Apparaat").Range("K3") = "*") Then GoTo geennummer
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value
geennummer:
ThisWorkbook.Saved = True
End Sub
Dit document kun je na invullen ZONDER OPSLAAN gewoon wegkruisen.
Opslaan gebeurd dan automatisch, zonder dat excel hierover klaagt.
In dit geval vul je code in in cel K3.
Wanneer je het document nu wegkruist, wordt de code in cel K3 gebruikt om je document te saven.
Het tabblad heet "Apparaat". Ook die kun je wijzigen in de code. (standaard heet je blad: "Blad 1".
Stel, je opent dit nieuwe lege document (wat je niet-ingevuld hebt opgeslagen) en wilt helemaal niets invullen, alleen sluiten (wegkruisen).
Type dan een * in K3.
Enter en kruis weg.
Er wordt nu niets opgeslagen.
Om nou niet te kunnen vergeten dat je de code invult, heb ik voor mijn eigen document een popup laten verschijnen, die eerst om de code vraagt.
- Typ een *: er gebeurd niets. Je kunt nu aan je document werken om iets te verbouwen aan de macro's ofzo.
- Typ een apparaat code, vul je form in, en kruis weg.
Document wordt onder de code opgeslagen.
Hier de hele code incl:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = True Then Exit Sub
If (Sheets("Apparaat").Range("K3") = "") Or (Sheets("Apparaat").Range("K3") = "*") Then GoTo geennummer
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value
geennummer:
ThisWorkbook.Saved = True
End Sub
Private Sub Workbook_Open()
With ActiveWorkbook.Sheets("Apparaat")
While IsEmpty(.Range("K3"))
.Range("K3").Value = InputBox("Apparaat-nummer invoeren aub.")
Wend
If (.Range("K3") = "*") Then Exit Sub
End With
End Sub