Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 7 van 7

Onderwerp: VBA opslaan aan- en uitzetten

  1. #1
    Junior Member
    Geregistreerd
    10 september 2021
    Vraag is opgelost

    VBA opslaan aan- en uitzetten

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

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    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.

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    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!

  2. #2
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Voor het kopiëren is dit voldoende:

    Code:
    Sub VenA()
      Sheets("Approval").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 17) = Sheets("Form MACRO").Range("A2:Q2").Value
    End Sub
    Wat verder de bedoeling is, is mij niet echt duidelijk.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  3. #3
    Junior Member
    Geregistreerd
    10 september 2021
    Dank voor je reactie. De bedoeling staat helemaal onderaan het bericht: ik wil dat enkel bepaalde geselecteerde users het document kunnen opslaan. De genoemde PrivateSub regelt dat. Het moet echter voor alle (andere) users mogelijk zijn om de macro FormNewEntrySubmit uit te voeren. In die macro wordt het document opgeslagen, maar dat kan dus alleen als het verbod op opslaan even wordt opgeheven en aan het eind van de macro weer wordt ingesteld. Zo kan dus geen van de andere niet geselecteerde gebruikers uit zichzelf opslaan, maar enkel door de macro te gebruiken. Dus samengevat is de vraag: hoe sla ik in het begin van die macro het opslaan toe en neem ik die mogelijkheid weer weg aan het eind van de macro?
    Laatst aangepast door huijb : 22 september 2021 om 16:55

  4. #4
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Zet dit in een Module:
    Code:
    Public InFormNewEntrySubmit As Boolean
    En vervolgens:
    Code:
    Sub FormNewEntrySubmit()
    '
    ' FormNewEntrySubmit Macro
     
        InFormNewEntrySubmit = True
        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
        
        InFormNewEntrySubmit = True
        ActiveWorkbook.Save
        InFormNewEntrySubmit = False
    End If
    Of de code van VenA voor het kopiëren uiteraard.

    En:
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If InFormNewEntrySubmit 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
    Laatst aangepast door edmoor : 22 september 2021 om 11:54
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  5. #5
    Junior Member
    Geregistreerd
    10 september 2021
    Top, dit werkt! Bedankt!
    Laatst aangepast door huijb : 22 september 2021 om 16:55

  6. #6
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Gebruik niet de Quote knop als je direct op het voorgaande bericht reageert.
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  7. #7
    Supermoderator
    Verenigingslid
    huijb's avatar
    Geregistreerd
    19 december 2001
    onnodige quotes verwijderd.
    Gegroet

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren