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

Controleren op lege cellen voor opslaan

Status
Niet open voor verdere reacties.

Ralf1991

Gebruiker
Lid geworden
10 okt 2014
Berichten
61
Beste helper,

Ik probeer een macro te gebruiken die controleer op onderstaande cellen of deze al dan niet zijn ingevuld. Wanneer men het bestand wil opslaan en een van deze aangegeven cellen is leeg dan dient er een messagebox te verschijnen waarop de gebruiker wordt geateneerd om deze cel in te vullen. Wanneer alles netjes is ingevuld dan mag de gebruiker het opstand opslaan.

Ik heb het eea op gezocht en ik kwam uit op onderstaande macro maar die doet helemaal niks.

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Long
With Sheets("Blad2")
  If .Cells(3, 5) = "" Then
    MsgBox "Cel E3 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(3, 5)
            
                End If
  If .Cells(6, 5) = "" Then
    MsgBox "Cel E6 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(6, 5)
            
                End If
   If .Cells(7, 5) = "" Then
    MsgBox "Cel E7 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(7, 5)
            
                End If
End With
Cancel = True

End Sub
 
Ralf,

volgens mij dien je nog een Exit Sub toe te voegen vlak vóór elke End If...
Dat zorgt er dan voor dat de macro onderbroken wordt en er iets ingevoerd kan worden.
 
Misschien kan je hier iets mee ?

Code:
If Range("A1") = Empty Then MsgBox ("Cel A1 invullen"), Range("A1").Select: Exit Sub
 
Bedankt voor jullie inzet. Ik heb beide geprobeerd maar ik blijf nog steeds de mogelijkheid houden om het bestand op te slaan ook al zijn de cellen leeg

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Long
With Sheets("Sheet2")
If Range("E3") = Empty Then MsgBox ("Cel E3 invullen"), Range("E3").Select: Exit Sub
End If
If Range("E6") = Empty Then MsgBox ("Cel E6 invullen"), Range("E6").Select: Exit Sub
End If
If Range("E7") = Empty Then MsgBox ("Cel E7 invullen"), Range("E7").Select: Exit Sub
End If
End With

Cancel = True


End Sub
 
post dan het bestand eens.....
 
OF:
Code:
If [COLOR="#FF0000"].[/COLOR]Range("E3") = Empty Then MsgBox ("Cel E3 invullen")[COLOR="#FF0000"]:[/COLOR] Range("E3").Select: Exit Sub
ipv
Code:
If Range("E3") = Empty Then MsgBox ("Cel E3 invullen"), Range("E3").Select: Exit Sub
 
Probeer het zo maar eens:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    With Sheets("Blad2")
        If .Cells(3, 5) = "" Then
            MsgBox "Cel E3 op blad 2 is niet ingevuld!"
            Application.Goto .Cells(3, 5)
            Cancel = True
        End If
      
        If .Cells(6, 5) = "" Then
            MsgBox "Cel E6 op blad 2 is niet ingevuld!"
            Application.Goto .Cells(6, 5)
            Cancel = True
        End If
        
        If .Cells(7, 5) = "" Then
            MsgBox "Cel E7 op blad 2 is niet ingevuld!"
            Application.Goto .Cells(7, 5)
            Cancel = True
        End If
    End With
End Sub
 
Je hebt de functie in een module gezet. Daar hoort deze niet. Zet hem achter ThisWorkbook.
 
wat Edmoor zegt klopt (in beide gevallen) ;-) - je moet de save routine onderbreken door de "Cancel = True" toe te voegen aan je code :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan