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

VBA opslaan aan- en uitzetten

Status
Niet open voor verdere reacties.

bobelsenburg

Gebruiker
Lid geworden
10 sep 2021
Berichten
10
Goedemorgen,

Ik heb een vraag over het aan- en uitzetten van opslaan. Het document waar het om gaat mag enkel door specifieke gebruikers worden opgeslagen op ieder gewenst moment. Alle overige gebruikers kunnen enkel opslaan als zij een formulier submitten. Dit gebeurt via een macro FormNewEntrySubmit (er worden daarin nog wat andere zaken gedaan, bijvoorbeeld de data op de volgende nieuwe regel die beschikbaar is plaatsen, dat werkt allemaal al maar voor de volledigheid heb ik even de hele macro weergegeven).

HTML:
Sub FormNewEntrySubmit()
'
' FormNewEntrySubmit Macro


    Sheets("Form new entry").Select
    Sheets("Form MACRO").Visible = True
    Sheets("Approval").Select
    Nr = Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Row
    Sheets("Form MACRO").Select
    Range("A2:Q2").Copy
    Sheets("Approval").Select
    Range("A" & Nr).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("Form MACRO").Select
    ActiveWindow.SelectedSheets.Visible = False
    Sheets("Form new entry").Select
    ActiveWorkbook.Save


End If

Daarnaast heb ik onderstaande Private Sub in ThisWorkbook om ervoor te zorgen dat alleen de gespecificeerde users het originele bestand kunnen opslaan.

HTML:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

a = Application.UserName
If a <> "User 1" And a <> "User 2" And a <> "User 3" And a <> "User 4" Then
    MsgBox "Saving not allowed." & vbCr & vbCr & "Submitting a form saves the input."
    Cancel = True
End If

End Sub

Wat ik dus graag wil, is dat op het moment dat iemand op Submit drukt, de macro tijdelijk opslaan toestaat, aan het eind van die macro (dus wanneer het formulier op de volgende lege regel is geplaatst, zie de macro FormNewEntrySubmit). Ik zal hetzelfde toepassen op een andere macro die het formulier leegt, maar als ik weet hoe ik bovenstaande moet oplossen, dan kan ik dat waarschijnlijk ook gemakkelijk toevoegen aan de Clear-macro.

Kan iemand mij hiermee helpen?
Alvast veel dank!
 
Excuus, verkeerde forum. Verplaatst naar VBA

Excuus, verkeerde forum. Verplaatst naar VBA
 
Bovenaan ThisWorkbook zet je:

Code:
Public AllowSave As Boolean

In jouw code voeg je toe:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If AllowSave Then Exit Sub 
a = Application.UserName
If a <> "User 1" And a <> "User 2" And a <> "User 3" And a <> "User 4" Then
    MsgBox "Saving not allowed." & vbCr & vbCr & "Submitting a form saves the input."
    Cancel = True
End If
 
End Sub

En als je ergens in code wil opslaan dan:
Code:
ThisWorkbook.AllowSave = True
'Opslaan code gaat hier
ThisWorkbook.AllowSave = False
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan