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

If vba loopt niet goed

Status
Niet open voor verdere reacties.

edsel_nl

Gebruiker
Lid geworden
24 okt 2006
Berichten
72
Beste lezers,

Ik wil de onderstaande code gebruiken om naar mensen een mail te sturen die in kolom H een waarde hebben die overeenkomt met met de waarde die net is ingevuld (eeknummerEvaluatie.Value). Echter lukt het me nog niet op het werkend te krijgen. Denk dat de fout zit in het onderstreepte gedeelte.

Code:
Private Sub Verzenden_Click()

'check for item
If Trim(Me.WeeknummerEvaluatie.Value) = "" Then
  Me.WeeknummerEvaluatie.SetFocus
  MsgBox "Weeknummer voor evaluatie invullen."
  Exit Sub
End If

'copy the data to the database
Range("H1").Value = Me.WeeknummerEvaluatie.Value
  
'clear the data
Me.WeeknummerEvaluatie.Value = ""
Unload Me

' Klanten waar waarde overeenkomt met week voor evaluatie mailen
Application.ScreenUpdating = False
For rij = 3 To 100
[U]If Cells(rij, 7) = Range("H1") Then _[/U]
With CreateObject("Outlook.application")
    With .CreateItem(0)
      .body = Sheets("Mail formulier").Range("B1") & " " & Sheets("Mail formulier").Range("B2") & "," & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B5") & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B6") & vbNewLine & Sheets("Mail formulier").Range("B7") & vbNewLine & Sheets("Mail formulier").Range("B8")
      .To = Sheets("Mail formulier").Range("B3")
      .CC = ""
      .BCC = ""
      .Subject = Sheets("Mail formulier").Range("B4")
      .Send
[U]    End With
End With[/U]

' Volgende rij
[U]Next rij[/U]

' Venster zegt.
MsgBox "Start Outlook om de emails te versturen. Controleer bij verzonden items of alles verstuurd is"


End Sub
 
Wat werk er niet? Ben je al door de code heen gelopen en heb je gechecked of je voorbij de If-statement komt (binnen de While... End While)?
 
Bij
Code:
If Cells(rij, 7) = Range("H1") Then _

---------------------------
Microsoft Visual Basic
---------------------------
Compileerfout:

End If zonder blok If
 
Als er inderdaad een underscore (liggend streepje) na Then staat, dan moet je die weghalen.
 
Dank je voor de snelle reactie wanneer ik de _ weghaal dan is de volgende fout:
Code:
Next rij
---------------------------
Microsoft Visual Basic
---------------------------
Compileerfout:

Next zonder For
---------------------------
 
kan het dit zijn
Code:
Private Sub Verzenden_Click()

'check for item
If Trim(Me.WeeknummerEvaluatie.Value) = "" Then
  Me.WeeknummerEvaluatie.SetFocus
  MsgBox "Weeknummer voor evaluatie invullen."
  Exit Sub
End If

'copy the data to the database
Range("H1").Value = Me.WeeknummerEvaluatie.Value
  
'clear the data
Me.WeeknummerEvaluatie.Value = ""
Unload Me

' Klanten waar waarde overeenkomt met week voor evaluatie mailen
Application.ScreenUpdating = False
For rij = 3 To 100
If Cells(rij, 7) = Range("H1") Then
With CreateObject("Outlook.application").CreateItem(0)
      .body = Sheets("Mail formulier").Range("B1") & " " & Sheets("Mail formulier").Range("B2") & "," & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B5") & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B6") & vbNewLine & Sheets("Mail formulier").Range("B7") & vbNewLine & Sheets("Mail formulier").Range("B8")
      .To = Sheets("Mail formulier").Range("B3")
      .CC = ""
      .BCC = ""
      .Subject = Sheets("Mail formulier").Range("B4")
      .Send
    End With
End With

' Volgende rij
Next rij

' Venster zegt.
MsgBox "Start Outlook om de emails te versturen. Controleer bij verzonden items of alles verstuurd is"


End Sub
 
Laatst bewerkt:
Dank je voor de snelle reactie wanneer ik de _ weghaal dan is de volgende fout:
Code:
Next rij
QUOTE]

Een underscore kan ook gebruikt worden om een macro op de volgende regel te plaatsen , wat wsl hier het geval is

Dat snap ik, maar dat is hier niet de bedoeling volgens mij.

Plaats eens een End if voor de Next rij. Dus

Code:
....
End If

' Volgende rij
Next rij
 
Zie topic boven ik vermoed dat hier de fout zit
Code:
If Cells(rij, 7) = Range("H1") Then _
[COLOR="Red"]With[/COLOR] CreateObject("Outlook.application")
    [COLOR="red"]With[/COLOR] .CreateItem(0)
 
Laatst bewerkt:
Super bedankt trucker10 en Etri :thumb: Een combinatie van jullie twee oplossingen werkte uiteindelijk.

end if en With CreateObject("Outlook.application").CreateItem(0)

Voor de volledigheid

Code:
Private Sub Verzenden_Click()

'check for item
If Trim(Me.WeeknummerEvaluatie.Value) = "" Then
  Me.WeeknummerEvaluatie.SetFocus
  MsgBox "Weeknummer voor evaluatie invullen."
  Exit Sub
End If

'copy the data to the database
Range("H1").Value = Me.WeeknummerEvaluatie.Value
  
'clear the data
Me.WeeknummerEvaluatie.Value = ""
Unload Me

' Klanten waar waarde overeenkomt met week voor evaluatie mailen
Application.ScreenUpdating = False
For rij = 3 To 100
If Cells(rij, 8) = Range("H1") Then
With CreateObject("Outlook.application").CreateItem(0)
      .body = Sheets("Mail formulier").Range("B1") & " " & Sheets("Mail formulier").Range("B2") & "," & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B5") & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B6") & vbNewLine & Sheets("Mail formulier").Range("B7") & vbNewLine & Sheets("Mail formulier").Range("B8")
      .To = Sheets("Mail formulier").Range("B3")
      .CC = ""
      .BCC = ""
      .Subject = Sheets("Mail formulier").Range("B4")
      .Send
    End With

' Volgende rij
End If
Next rij

' Venster zegt.
MsgBox "Start Outlook om de emails te versturen. Controleer bij verzonden items of alles verstuurd is"
 
Code:
If Cells(rij, 7) = Range("H1") Then _
With CreateObject("Outlook.application")
    With .CreateItem(0)
      .body = Sheets("Mail formulier").Range("B1") & " " & Sheets("Mail formulier").Range("B2") & "," & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B5") & vbNewLine & vbNewLine & Sheets("Mail formulier").Range("B6") & vbNewLine & Sheets("Mail formulier").Range("B7") & vbNewLine & Sheets("Mail formulier").Range("B8")
      .To = Sheets("Mail formulier").Range("B3")
      .CC = ""
      .BCC = ""
      .Subject = Sheets("Mail formulier").Range("B4")
      .Send
    End With
End With

Er mag inderdaad geen liggens streepje staan na then en de if wordt gewoon niet gewoon niet afgsloten.Tenminste ik zie geen end if
Deze moet na de tweede end with komen.

Edit; achterhaalde informatie, Etri had deze al gevonden en je bent er al uit zie ik
 
Laatst bewerkt:
En ik had idd nog een End With niet vervangen door End If :confused: , maar het is opgelost :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan