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

controle verplichte velden en eventueel afbreken macro

Status
Niet open voor verdere reacties.

wim66

Gebruiker
Lid geworden
14 jan 2010
Berichten
16
Geacht forum,

Graag zou ik willen weten hoe ik een macro die ik gemaakt heb om een werkblad in een pdf om te zetten, op te slaan en deze per e-mail te versturen kan afbreken als er op een ander werkblad 3 bepaalde verplichte cellen niet zijn ingevuld. Het liefst moet er een melding komen en bij klikken op [ok] dient een bepaalde cel geselecteerd te worden.
De macro wordt uitgevoerd als er op een knop op het werkblad wordt geklikt.
(Heb wel informatie gevonden over afbreken bij opslaan of afsluiten maar niet voor andere acties van macro's)


Bekijk bijlage pdf opslaan en verzenden.txt

Zelf vind ik het leuk om met excel te "knutselen", maar heb hier verder geen opleiding voor genoten. Een helder en niet al te ingewikkeld antwoord is dus zeer welkom.
 
Probeer deze eens te vertalen in jouw bestand.
Hier gaat het om de cellen A1 t/m A3.

Code:
Dim i As Long
For i = 1 To 3
  If Cells(i, 1) = "" Then
     MsgBox "blabla"
 Application.Goto Cells(i, 1)
   Exit Sub
  End If
 Next
 
Hallo Harry,

Bedankt voor je reactie,

De code die je me gegeven hebt werkt inderdaad als je verwijst bnaar cellen op hetzelfde tabblad.
Als je echter cellen wil controleren op een ander tabblad lukt mij het niet. Tevens wil ik graag cellen op verscillende plekken controleren.
Cellen die ik vanuit tabblad 1 wil controleren zijn cellen B1, B4 en C7 allen op tabblad 2.

Zoals ik al gemeld had ben ik slechts een amateur en is de beantwoording misschien vrij voor de hand liggend, maar ik heb een tijd lang zitten experimenteren, maar het lukte helaas niet.

Met vriendelijke groet,

Wim
 
Als het maar 3 cellen zijn die te controleren zijn kan je deze code gebruiken:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Long
With Sheets("Blad2")
  If .Cells(1, 2) = "" Then
    'MsgBox "Cel B1 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(1, 2)
            .Cells(1, 2) = InputBox("Je moet cel B1 nog ingeven!:")
                End If
  If .Cells(4, 2) = "" Then
    'MsgBox "Cel B4 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(4, 2)
            .Cells(4, 2) = InputBox("Je moet cel B4 nog ingeven!:")
                End If
   If .Cells(7, 3) = "" Then
    'MsgBox "Cel C7 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(7, 3)
            .Cells(7, 3) = InputBox("Je moet cel C7 nog ingeven!:")
                End If
End With
End Sub

Je kan de Msgboxen activeren door de ' weg te halen voor de groene regels.
 
Het lukt toch niet helemaal.
Wat ik graag wil is dat er eerst een controle wordt uitgevoerd voordat het tweede deel van de macro in werking wordt gesteld. Dus alleen als er geen lege velden aanwezig zijn bij de 3 aangewezen cellen moet het werkblad omgezet worden in een pdf en opgeslagen worden en in outlook worden klaargezet voor verzending (deze macro werkt op zich goed). Deze acties dienen uitgevoerd te worden als de knop op het werkblad wordt aangeklikt.

*Is de code "Workbook_BeforeSave" te koppelen aan een knop? (Of wordt deze code alleen uitgevoerd bij sluiten en opslaan?)
*Is het mogelijk deze actie automatisch te laten volgen door deel 2 zoals in het bestandje in mijn oorspronkelijke vraag?
Sub PDF_verzenden()'
' PDF_verzenden Macro
'
' Sneltoets: CTRL+v
'
ActiveSheet.ExportAsFixedF etc.

Is dit een mogelijkheid? (Werkt nu nog niet)

Sub PDF_verzenden()'

With Sheets("Blad2")
If Cells(1, 2) = "" Then
MsgBox "blabla"
Application.Goto Cells(1, 2)
Exit Sub
End If
If Cells(4, 2) = "" Then
MsgBox "tweede melding"
Application.Goto Cells(4, 2)
Exit Sub
End If
If Cells(7, 3) = "" Then
MsgBox "derde melding"
Application.Goto Cells(7, 3)
Exit Sub
End If

End With


' PDF_verzenden Macro
'
' Sneltoets: CTRL+v
'

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"J:\Labuitslagen\Melk\"..........
Bij voorbaat dank!
Groet, Wim
 
Laatst bewerkt:
Nu kan je deze code achter een button hangen of in je andere macro gewoon aanroepen met de opdracht 'Invoercontrole':

Code:
Sub Invoercontrole()
With Sheets("Blad2")
  If .Cells(1, 2) = "" Then
    'MsgBox "Cel B1 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(1, 2)
            .Cells(1, 2) = InputBox("Je moet cel B1 nog ingeven!:")
                End If
  If .Cells(4, 2) = "" Then
    'MsgBox "Cel B4 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(4, 2)
            .Cells(4, 2) = InputBox("Je moet cel B4 nog ingeven!:")
                End If
   If .Cells(7, 3) = "" Then
    'MsgBox "Cel C7 op blad 2 is niet ingevuld!"
        Application.Goto .Cells(7, 3)
            .Cells(7, 3) = InputBox("Je moet cel C7 nog ingeven!:")
                End If
End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan