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

Status
Niet open voor verdere reacties.

jjmermen

Gebruiker
Lid geworden
23 okt 2012
Berichten
49
Ik heb onderstaande macro.
Is er een mogelijk dat deze macro wordt uitgevoerd voordat het bestand gesloten wordt?



Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   For Each cell In Sheets("Items").Range("a12:a40")
      If cell <> "" Then                         'bepaalde A-cel is niet leeg
         If cell.Offset(, 111) = "" Then         '111 kolommen verder wel leeg
            MsgBox "Productgroep 1 moet ingevuld zijn"
            Cancel = True
            Exit For
         ElseIf cell.Offset(, 6) = "" Then       '4 kolommen verder wel leeg
            MsgBox "Verkoop Eenheid mag niet leeg zijn"
            Cancel = True
            Exit For
         End If
      End If
   Next
End Sub
 

Bijlagen

  • Test nweartnr.xlsm
    147,9 KB · Weergaven: 32
Laatst bewerkt:
Sorry, ik formulier het verkeerd. Ik heb nu ook een bijlage toegevoegd.
Als de verplichte cellen in het Excel bestand niet zijn ingevuld kan men dit bestand alsnog mailen via menu Bestand / Opslaan en Verzenden zonder dat de macro wordt uitgevoerd.
Is het mogelijk dat de macro wordt uitgevoerd voordat men in het menu op Bestand klikt?
 
Opslaan en verzenden zit niet in mijn Excel-versie, maar plaats het hier eens tussen.
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
...code...
End Sub
 
Heb je het wel zo gedaan?

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For Each cell In Sheets("Items").Range("a12:a40")
      If cell <> "" Then                         'bepaalde A-cel is niet leeg
         If cell.Offset(, 111) = "" Then         '111 kolommen verder wel leeg
            MsgBox "Productgroep 1 moet ingevuld zijn"
            Cancel = True
            Exit For
         ElseIf cell.Offset(, 6) = "" Then       '4 kolommen verder wel leeg
            MsgBox "Verkoop Eenheid mag niet leeg zijn"
            Cancel = True
            Exit For
         End If
      End If
   Next

End Sub
 
Wordt de code wel aangeroepen door 'opslaan en verzenden'?
Zet eens met F9 een onderbrekingspunt op de eerste regel.
 
De code wordt niet aangeroepen door 'opslaan en verzenden.
Ook niet als ik een onderbrekingspunt op de eerste regel zet.
 
De code staat wel in ThisWorkbook module mag ik aannemen.
 
De code staat ook in ThisWorkbook.
Heb je mijn bijlage getest met jou code? En werkt dat bij je als je op de knop Opslaan en Verzenden klikt?
 
Opslaan en verzenden zit niet in Excel 2007 dus kan het niet testen.

Het is een BeforeSave-event dus dacht dat het wel zou werken.
 
Is het misschien op een andere manier mogelijk?
Bijvoorbeeld als de volgende cel wordt geselecteerd.
 
plaats eens de versie van het bestand die je getest wilt hebben in Excel 2010, svp
 
Ik heb de bijlage toegevoegd. Dit is dezelfde bijlage als in mijn eerste bericht in dit Topic.
 

Bijlagen

  • Test nweartnr.xlsm
    147,9 KB · Weergaven: 35
Opslaan en verzenden is in O365 Bestand > Delen > Excel werkmap. Die maakt een kopie van de werkmap zoals die op dat moment in het geheugen is en verstuurt dat. Er worden dus geen beforeclose en beforesave events uitgevoerd.
Een oplossing is om het toevoegen/wijzigen/verwijderen van de gegevens via een form te doen, dan hou je controle.
Andere oplossing is om de opdracht Opslaan en Verzenden op het juiste moment te de/activeren maar dat is niet eenvoudig.

Opvallend: de range A12:A50 is blauw maar je beforeclose controleert A12:A40. En: je controleert ook de verborgen oneven regels die een kopie van de regel erboven bevatten?
 
Beste Pixel,

Misschien ben ik niet duidelijk met wat ik bedoel met Opslaan en Verzenden. Hieronder een afbeelding van wat ik bedoel in mijn Excel 2010
Opslaan en Verzenden Excel 2010.PNG

Als het niet eenvoudig is wat mijn wens is, laat ik het zoals het nu is.
Bedankt voor je tip over de range. Ik zal deze aanpassen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan