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

VBA Melding weergeven wanneer cel niet is ingevuld

Status
Niet open voor verdere reacties.

Judithdoek

Gebruiker
Lid geworden
9 mrt 2021
Berichten
70
In de bijlage een voorbeeld bestand met een probleem waar ik niet helemaal uit kom.

Ik wil graag dat wanneer bepaalde cellen niet zijn ingevoerd, dat de macro niet wordt uitgevoerd,
maar dat in plaats daarvan een foutmelding in beeld komt dat bepaalde gegevens nog niet zijn ingevoerd.

Ik zit zelf te denken aan de volgende code:

Code:
Option Explicit

Sub Gegevens_opslaan()
ReDim ar(1 To 1, 1 To 5)
  With Sheets("Invoerbestand test2")
  'If .Cells(4, 4).Cells(4, 6).Cells(9, 2).Cells(9, 4).Value = "" Then 'Hier moet een code komen die een foutmelding geeft, waardoor de actie niet wordt uitgevoerd
  'Else
If .Cells(4, 2).Value = "" Then .Cells(4, 2).Value = 0
      ar(1, 1) = [Nummer]
      ar(1, 2) = [Naam]
      ar(1, 3) = [Afspraak]
      ar(1, 4) = [Klant]
      ar(1, 5) = [Datum]
    .Cells(4, 2).Value = Year(Date) & "-" & Format(Int(Right(.Cells(4, 2).Value, 4)) + 1, "#0000")
  End With
  With Sheets("Overzicht afspraken test2")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, UBound(ar, 2)) = ar
  End With
End Sub
Sub Cellen_leegmaken()
'If .Cells(4, 4).Cells(4, 6).Cells(9, 2).Cells(9, 4).Value = "" Then 'Hier moet een code komen die een foutmelding geeft, waardoor de actie niet wordt uitgevoerd
  'Else
Range("D4").ClearContents
Range("F4").ClearContents
Range("B9").ClearContents
Range("D9").ClearContents
End Sub

Private Sub CommandButton1_Click()
Call Gegevens_opslaan
Call Cellen_leegmaken
End Sub

Probleem 1:
Ik weet alleen niet hoe ik er verder voor zorg dat de macro niet wordt uitgevoerd en hoe ik een melding in beeld krijg.​

Probleem 2:
Daarnaast wil ik uiteindelijk ook dat op het blad Invoerbestand test2:
- Stel dat Naam (cel D4) is ingevoerd dan moet er een foutmelding komen wanneer Afspraak (cel F4) niet is ingevoerd.
- Stel dat Naam (cel D4) niet is ingevoerd dan hoeft er geen foutmelding te komen wanneer Afspraak (cel F4) niet is ingevoerd en kan de macro daaropvolgend gewoon uitgevoerd worden.
Kan iemand mij helpen met deze 2 problemen?

Alvast bedankt!
 

Bijlagen

  • Melding wanneer een cel niet is ingevoerd.xlsm
    23,8 KB · Weergaven: 15
Zo kom je er denk ik wel uit

Code:
If .Cells(4, 4) = "" Or .Cells(4, 6) = "" Or .Cells(9, 2) = "" Or .Cells(9, 4) = "" Then
   MsgBox "Niet alle velden zijn ingevuld", vbOKCancel, "Let op"
   Exit Sub
Else
   ...
   ...
End If
 
Hoi @JVeer dank voor je snelle reactie.

Ik krijg alleen de melding dat er geen If bij Else is gevonden als ik hem zo invoer.

Code:
Sub Gegevens_opslaan()
ReDim ar(1 To 1, 1 To 5)
  With Sheets("Invoerbestand test2")
  If .Cells(4, 4) = "" Or .Cells(4, 6) = "" Or .Cells(9, 2) = "" Or .Cells(9, 4) = "" Then MsgBox "Niet alle verplichte velden zijn ingevuld", vbOKCancel, "Let op"
  Exit Sub
Else
If .Cells(4, 2).Value = "" Then .Cells(4, 2).Value = 0
      ar(1, 1) = [Nummer]
      ar(1, 2) = [Naam]
      ar(1, 3) = [Afspraak]
      ar(1, 4) = [Klant]
      ar(1, 5) = [Datum]
    .Cells(4, 2).Value = Year(Date) & "-" & Format(Int(Right(.Cells(4, 2).Value, 4)) + 1, "#0000")
    End If
  With Sheets("Overzicht afspraken test2")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, UBound(ar, 2)) = ar
  End With
End Sub
Sub Cellen_leegmaken()
'If .Cells(4, 4).Cells(4, 6).Cells(9, 2).Cells(9, 4).Value = "" Then 'Hier moet een code komen die een foutmelding geeft, waardoor de actie niet wordt uitgevoerd
  'Else
Range("D4").ClearContents
Range("F4").ClearContents
Range("B9").ClearContents
Range("D9").ClearContents
End Sub

Private Sub CommandButton1_Click()
Call Gegevens_opslaan
Call Cellen_leegmaken
End Sub
 
Je hebt het ook niet gedaan zoals JVeer liet zien.
 
Entertje na Then geven
 
Bedankt, maar op één of ander manier krijg ik nog steeds dezelfde melding als in #3

Wat doe ik fout?

Code:
Option Explicit

Sub Gegevens_opslaan()
ReDim ar(1 To 1, 1 To 5)
  With Sheets("Invoerbestand test2")
  If .Cells(4, 4) = "" Or .Cells(4, 6) = "" Or .Cells(9, 2) = "" Or .Cells(9, 4) = "" Then
  MsgBox "Niet alle verplichte velden zijn ingevuld", vbOKCancel, "Let op"
  Exit Sub
Else
If .Cells(4, 2).Value = "" Then .Cells(4, 2).Value = 0
      ar(1, 1) = [Nummer]
      ar(1, 2) = [Naam]
      ar(1, 3) = [Afspraak]
      ar(1, 4) = [Klant]
      ar(1, 5) = [Datum]
    .Cells(4, 2).Value = Year(Date) & "-" & Format(Int(Right(.Cells(4, 2).Value, 4)) + 1, "#0000")
    End If
  With Sheets("Overzicht afspraken test2")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, UBound(ar, 2)) = ar
  End With
End Sub
Sub Cellen_leegmaken()
'If .Cells(4, 4).Cells(4, 6).Cells(9, 2).Cells(9, 4).Value = "" Then 'Hier moet een code komen die een foutmelding geeft, waardoor de actie niet wordt uitgevoerd
  'Else
Range("D4").ClearContents
Range("F4").ClearContents
Range("B9").ClearContents
Range("D9").ClearContents
End Sub

Private Sub CommandButton1_Click()
Call Gegevens_opslaan
Call Cellen_leegmaken
End Sub
 

Bijlagen

  • Melding wanneer een cel niet is ingevoerd.xlsm
    23,4 KB · Weergaven: 20
Dit:
Code:
If .Cells(4, 2).Value = "" Then .Cells(4, 2).Value = 0 [COLOR="#FF0000"]Then[/COLOR]
 
Or, or, or, is ook zo iets.
Code:
if application.counta(.range("b9,d4,d9,f4")) < 4 then msgbox
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan