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

Vergelijken mbv msgbox van gevraagde leverdatum

Status
Niet open voor verdere reacties.

wouter1970

Gebruiker
Lid geworden
29 okt 2012
Berichten
7
Ik wil in een database een msgbox tonen, zodra van een rij order records de gevraagde leverdatum <= vandaag is en de status van de record een verkooporder of voorraadorder is. Zie onderstaand voorbeeld en bijgaande werkmap.
Dit gaat niet goed. Ik begrijp niet wat ik fout doe. Ik ben een VBA beginner... Als ik hetzelfde doe met tekst ipv datum (dus een kolom die een bepaalde tekst toont als gevraagde leverdatum <= vandaag is, dan werkt het wel goed).

Eventueel zou ik daarnaast de records die te laat zijn graag in 1 keer willen tonen in 1 msgbox. Hier heb je een array voor nodig dacht ik? Kan iemand mij op weg helpen?

Dank en groet!

Code:
Private Sub Workbook_Open()
Dim melddatum As String
Dim status As String
Dim proj As String
Dim i, lr As Integer
    Sheets("blad1").Range("C1500").Select ''kolom met leverdatum gevraagd
    Selection.End(xlUp).Select
    lr = ActiveCell.Row
        For i = 4 To lr
          melddatum = Range("C" & i).Value  ''gevraagde datum
          proj = Range("A" & i).Value ''projectnaam in msgbox
          status = Range("B" & i).Value  ''verkooporder of voorraadorder
          Range("A" & i).Select ''toon regel in kolom A
          If melddatum <= Date And status = "verkooporder" Then MsgBox "Let op gevraagde leverdatum klant is " & melddatum & "   Order " & proj & " in status '" & status & "' is nog niet geleverd!", vbCritical, "Let op!"
          If melddatum <= Date And status = "voorraadorder" Then MsgBox "Let op gevraagde leverdatum klant " & melddatum & "   Order " & proj & " in status '" & status & "' is nog niet geleverd!", vbCritical, "Let op!"
    Next i
    
    Range("A4").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    
    End Sub
 

Bijlagen

Laatst bewerkt door een moderator:
Hier is alvast je aangepaste code:
Code:
Private Sub Workbook_Open()
Dim melddatum As String
Dim status As String
Dim proj As String
Dim i, lr As Integer
    lr = Sheets("blad1").Range("C1500").End(xlUp).Row
      For i = 4 To lr
          melddatum = Format(Range("C" & i), "dd/mm/yy")
          proj = Range("A" & i).Value
          status = Range("B" & i).Value
          If melddatum <= Date And status = "verkooporder" Then MsgBox "Let op gevraagde leverdatum klant is " & melddatum & "   Order " & proj & " in status '" & status & "' is nog niet geleverd!", vbCritical, "Let op!"
          If melddatum <= Date And status = "voorraadorder" Then MsgBox "Let op gevraagde leverdatum klant " & melddatum & "   Order " & proj & " in status '" & status & "' is nog niet geleverd!", vbCritical, "Let op!"
      Next i
    
    Range("A4").End(xlDown).Offset(1, 0).Select
    
End Sub
 
[Cobbe, dank voor je hulp. Ik heb je aanpassing getest. Ik heb het datum format in de werkmap ook gecheckt (kolom c) en dit is ook dd/mm/yy. Echter, het toont nog steeds niet de records waarbij gevraagde data <= vandaag() met status verkooprder of voorraadorder. Ik heb overigens aan je wijziging nog iets toegevoegd, zie code hieronder, dit krijg ik ook niet voor elkaar...

Private Sub Workbook_Open()
Dim melddatum As String
Dim status As String
Dim proj As String
Dim i, lr As Integer
lr = Sheets("blad1").Range("C1500").End(xlUp).Row
For i = 4 To lr
melddatum = DateAdd("d", -3, Format(Range("C" & i), "dd/mm/yy").Value) ''zou dit zo ongeveer kunnen werken? Maak de vergelijkingsdatum 3 dagen eerder!
proj = Range("A" & i).Value
status = Range("B" & i).Value
Range("A" & i).Select ''heb ik even laten staan; toon gevonden regel in kolom A, handig in lange tabel

If melddatum <= Date And status = "verkooporder" Then MsgBox "Let op gevraagde leverdatum klant is " & melddatum & " Order " & proj & " in status '" & status & "' is nog niet geleverd!", vbCritical, "Let op!"
If melddatum <= Date And status = "voorraadorder" Then MsgBox "Let op gevraagde leverdatum klant " & melddatum & " Order " & proj & " in status '" & status & "' is nog niet geleverd!", vbCritical, "Let op!"
Next i

Range("A4").End(xlDown).Offset(1, 0).Select

End Sub

Dank en vr grt, Wouter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan