Goedendag, ik gebruik in een Excel sheet een knop voor het mailen van het formulier. Nu wil is voor het verzenden eerst controleren of bepaalde velden zijn ingevoerd. Deze check kent 2 varianten, dit is afhankelijk van een waarde in (in dit geval NIEUWE MEDEWERKER).
Opzich werkt dit allemaal goed maar als ik de de codes combineer krijg ik onderstaande foutmelding:
Compileerfout:
End if zonder blok if
Ik begrijp de fout niet, ik heb gebprobeerd op er nog een 'end if' bij te plaatsen maar ik krijg het niet werkend.
Onderstaand de code, voor de duidelijkheid heb ik hem ook in bijgaand Word file geplakt. Het gele blok is de code controle op de velden en het opslaan. Het roze blok is de code voor het versturen via de mail.
Wie weet de oplossing voor mijn probleem en kan mij in de goede richting zetten.
Bvd
Sjoerd
Private Sub FORMULIER_VERZENDEN_Click()
'Zet het scherm stil
Application.ScreenUpdating = False
'EERST OPSLAAN IN PERSOONLIJKE MAP MET DE NAAM VAN DE (NIEUWE) MEDEWERKER
'Voor nieuwe medewerkers check op naam en telefoonnummer, voor wijz. en uitdienst alleen op naam.
If Range("SOORT_MUTATIE") = "NIEUWE MEDEWERKER" Then GoTo OPSL_NIEUW Else GoTo OPSL_OVERIG
OPSL_OVERIG:
'Controle op invoer van verplichte velden:
If Worksheets("Registratieformulier").Range("E24") = "" Then
MsgBox "U moet de naam van de medewerker invoeren voordat u op kunt slaan, rij 24.", vbCritical, "Naam ontbreekt!"
Else
ActiveWorkbook.SaveAs Filename:= _
"H:\" & [E22] & " - " & [E24] & ".xlsm"
End If
GoTo EINDE
OPSL_NIEUW:
'Controle op invoer van verplichte velden:
If Worksheets("Registratieformulier").Range("E24") = "" Then
MsgBox "U moet de naam van de medewerker invoeren voordat u op kunt slaan, rij 24.", vbCritical, "Naam ontbreekt!"
ElseIf Worksheets("Registratieformulier").Range("E26") = "" Then
MsgBox "U moet een telefoonnumer invullen voor contact met ICT, rij 26.", vbCritical, "Nummer ontbreekt!"
Else
ActiveWorkbook.SaveAs Filename:= _
"H:\" & [E22] & " - " & [E24] & ".xlsm"
End If
EINDE:
'DEZE CODE VOOR VOOR HET MAKEN VAN DE TESKT WELKE IN DE 'BODY' VAN DE MAIL WORDT GEPLAATST
Bericht = InputBox("voer een tekst in welke wordt weergegeven in het emailbericht.", "mail bericht") 'deze 2 regels boven aan
If StrPtr(Bericht) = 0 Then Exit Sub
'MAILEN VAN HET OPGESLAGEN SHEET NAAR HET BEDRIJFSBUREAU
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "bedrijfsbureau@xxxxxx.nl "
.CC = ""
.BCC = ""
.Subject = "Registratieformulier"
.Body = Bericht 'deze regel ingeval van 'eigen tekst'
' .Body = "Bijgaand het registratieformulier"
.Attachments.Add ActiveWorkbook.FullName
.Send 'or use .Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
'TOON MELDING DAT FILE IS OPGESLAGEN EN VERZONDEN
MsgBox "Het document op opgeslagen in uw persoonlijke map en gemaild naar 'bedrijfsbureau@xxxxx.nl.", vbOKOnly
End If
'ZET DE CURSOR IN EEN CEL VAN HET SHEET
Range("A1").Select
Application.Goto Reference:="INGEVULD_DOOR"
End Sub
Opzich werkt dit allemaal goed maar als ik de de codes combineer krijg ik onderstaande foutmelding:
Compileerfout:
End if zonder blok if
Ik begrijp de fout niet, ik heb gebprobeerd op er nog een 'end if' bij te plaatsen maar ik krijg het niet werkend.
Onderstaand de code, voor de duidelijkheid heb ik hem ook in bijgaand Word file geplakt. Het gele blok is de code controle op de velden en het opslaan. Het roze blok is de code voor het versturen via de mail.
Wie weet de oplossing voor mijn probleem en kan mij in de goede richting zetten.
Bvd
Sjoerd
Private Sub FORMULIER_VERZENDEN_Click()
'Zet het scherm stil
Application.ScreenUpdating = False
'EERST OPSLAAN IN PERSOONLIJKE MAP MET DE NAAM VAN DE (NIEUWE) MEDEWERKER
'Voor nieuwe medewerkers check op naam en telefoonnummer, voor wijz. en uitdienst alleen op naam.
If Range("SOORT_MUTATIE") = "NIEUWE MEDEWERKER" Then GoTo OPSL_NIEUW Else GoTo OPSL_OVERIG
OPSL_OVERIG:
'Controle op invoer van verplichte velden:
If Worksheets("Registratieformulier").Range("E24") = "" Then
MsgBox "U moet de naam van de medewerker invoeren voordat u op kunt slaan, rij 24.", vbCritical, "Naam ontbreekt!"
Else
ActiveWorkbook.SaveAs Filename:= _
"H:\" & [E22] & " - " & [E24] & ".xlsm"
End If
GoTo EINDE
OPSL_NIEUW:
'Controle op invoer van verplichte velden:
If Worksheets("Registratieformulier").Range("E24") = "" Then
MsgBox "U moet de naam van de medewerker invoeren voordat u op kunt slaan, rij 24.", vbCritical, "Naam ontbreekt!"
ElseIf Worksheets("Registratieformulier").Range("E26") = "" Then
MsgBox "U moet een telefoonnumer invullen voor contact met ICT, rij 26.", vbCritical, "Nummer ontbreekt!"
Else
ActiveWorkbook.SaveAs Filename:= _
"H:\" & [E22] & " - " & [E24] & ".xlsm"
End If
EINDE:
'DEZE CODE VOOR VOOR HET MAKEN VAN DE TESKT WELKE IN DE 'BODY' VAN DE MAIL WORDT GEPLAATST
Bericht = InputBox("voer een tekst in welke wordt weergegeven in het emailbericht.", "mail bericht") 'deze 2 regels boven aan
If StrPtr(Bericht) = 0 Then Exit Sub
'MAILEN VAN HET OPGESLAGEN SHEET NAAR HET BEDRIJFSBUREAU
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "bedrijfsbureau@xxxxxx.nl "
.CC = ""
.BCC = ""
.Subject = "Registratieformulier"
.Body = Bericht 'deze regel ingeval van 'eigen tekst'
' .Body = "Bijgaand het registratieformulier"
.Attachments.Add ActiveWorkbook.FullName
.Send 'or use .Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
'TOON MELDING DAT FILE IS OPGESLAGEN EN VERZONDEN
MsgBox "Het document op opgeslagen in uw persoonlijke map en gemaild naar 'bedrijfsbureau@xxxxx.nl.", vbOKOnly
End If
'ZET DE CURSOR IN EEN CEL VAN HET SHEET
Range("A1").Select
Application.Goto Reference:="INGEVULD_DOOR"
End Sub