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

Hoe kan ik lege invulvelden voorkomen?

Status
Niet open voor verdere reacties.

Tijger81

Gebruiker
Lid geworden
2 jan 2010
Berichten
397
Hallo,

Ik heb een excel bestand waar mensen bepaalde cellen moeten invullen. De inhoud wordt automatisch gekopieerd naar een andere sheet en de cellen worden dan weer leeg. enz. enz.
Alleen ik wil voorkomen dat mensen cellen kunnen leeglaten en dan toch op mijn bevestigingsknop kunnen drukken. Ik probeer er eigenlijk een msgbox tussen te frutselen die tevoorschijn komt als men niet al de verplichte cellen invult. En dat de gegevens dan niet gekopieerd worden door excel naar het andere blad.
Dit heb ik tot nu toe:
Alleen het werkt niet.
Wie kan mij helpen?


Code:
Sub Toevoegen()
    'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
    Sheets("bestand").Visible = True
    Sheets("bestand").Select
    ActiveSheet.Unprotect Password:="tijger"
    
    'check of velden ingevuld zijn
    If Sheets("invoer").Range("D15:K15").Value = "" Then
    If else goto????????
    MsgBox "Uw heeft niet al de gegevens ingevuld"
    End If
    
    'Tekst van invoer naar bestand kopieren
    With Sheets("bestand")
    .Rows(3).Insert Shift:=xlDown
    Worksheets("invoer").Range("C15:K15").Copy
    With .Range("A3:I3")
    .PasteSpecial xlPasteValues
    .Borders.LineStyle = xlContinuous
    .Interior.Pattern = xlNone
    End With
    Worksheets("invoer").Range("D15:K15").ClearContents
    End With
 
    'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
    ActiveSheet.Protect Password:="tijger"
    ActiveSheet.Visible = False
    Sheets("Invoer").Select
    MsgBox "De gegevens zijn toegevoegd" 
    End

   End Sub
 
Laatst bewerkt door een moderator:
Goedemorgen Tijger,

Er staat in je tekst dat er op een knop gedrukt wordt en dat dan gecontroleerd moet worden of de velden ingevuld zijn.
De actie is dan:
Code:
Private Sub CommandButton1_Click()
tel=0
For i = 4 To 11
    If IsEmpty(Sheets("invoer").Cells(15, i)) Then MsgBox "Uw heeft niet al de gegevens ingevuld": i = 11 Else tel=tel+1
Next i
If tel=8 then 
'Tekst van invoer naar bestand kopieren
With Sheets("bestand")
.Rows(3).Insert Shift:=xlDown
Worksheets("invoer").Range("C15:K15").Copy
With .Range("A3:I3")
.PasteSpecial xlPasteValues
.Borders.LineStyle = xlContinuous
.Interior.Pattern = xlNone
End With
Worksheets("invoer").Range("D15:K15").ClearContents
End With
End if
End Sub
Er zijn ook tal van andere oplossingen te bedenken. Zoals bijvoorbeeld de knop pas Visible te maken als de cellen D15 t/m K15 gevuld zijn.

Uit je bestaande code natuurlijk de check verwijderen.

Je kan hier ook de kopieerfunctie aan vast koppelen, zodat de gegevens pas gekopieerd worden zodra alle velden ingevuld zijn.

Groet,
Jeroen
 
Laatst bewerkt door een moderator:
Hoi Goedemorgen,

Ik heb nu dit,maar krijg error bij drukken op knop.
De cellen die gevuld moeten worden zijn D15 t/m K15

Code:
Sub Toevoegen()
    'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
    Sheets("bestand").Visible = True
    Sheets("bestand").Select
    ActiveSheet.Unprotect Password:="tijger"
    
    'check of velden ingevuld zijn
Private Sub CommandButton1_Click()
    tel = 0
    For i = 4 To 11
    If IsEmpty(Sheets("invoer").Cells(D15, i)) Then MsgBox "U heeft niet al de gegevens ingevuld": i = 11 Else tel = tel + 1
    Next i
    If tel = 8 Then
    
    'Tekst van invoer naar bestand kopieren
    With Sheets("bestand")
    .Rows(3).Insert Shift:=xlDown
    Worksheets("invoer").Range("C15:K15").Copy
    With .Range("A3:I3")
    .PasteSpecial xlPasteValues
    .Borders.LineStyle = xlContinuous
    .Interior.Pattern = xlNone
    End With
    Worksheets("invoer").Range("D15:K15").ClearContents
    End With
    End If
    End Sub
 
    'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
    ActiveSheet.Protect Password:="tijger"
    ActiveSheet.Visible = False
    Sheets("Invoer").Select
    MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
    End

   End Sub
 
Laatst bewerkt door een moderator:
Ik heb maar 1 knop. En dat is de knop die mensen moeten indrukken als de cellen zijn ingevuld.
De knop moet dus eerst kijken of de cellen wel zijn ingevuld. Zo nee, dan de msgbox melding, zo ja doorgaan met de procedure
 
Hoi Tijger,

OK, je hebt dus een knop die als er op gedrukt wordt verwijst naar deze macro.

Code:
Sub Toevoegen()
'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
Sheets("bestand").Visible = True
Sheets("bestand").Select
ActiveSheet.Unprotect Password:="tijger"

'check of velden ingevuld zijn
tel = 0
For i = 4 To 11
If IsEmpty(Sheets("invoer").Cells(D15, i)) Then MsgBox "U heeft niet al de gegevens ingevuld": i = 11 Else tel = tel + 1
Next i
If tel = 8 Then

'Tekst van invoer naar bestand kopieren
With Sheets("bestand")
.Rows(3).Insert Shift:=xlDown
Worksheets("invoer").Range("C15:K15").Copy
With .Range("A3:I3")
.PasteSpecial xlPasteValues
.Borders.LineStyle = xlContinuous
.Interior.Pattern = xlNone
End With
Worksheets("invoer").Range("D15:K15").ClearContents
End With
End If

'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
ActiveSheet.Protect Password:="tijger"
ActiveSheet.Visible = False
Sheets("Invoer").Select
MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
End

End Sub
Er stond een sub binnen een sub.
 
Laatst bewerkt door een moderator:
Hoi, dank je voor de antwoorden.
Ik heb het weer aangepast en nu krijg ik de melding van dat de velden niet zijn ingevuld, maar ook de melding over dat de gegevens zijn toegevoegd. Dus hij lijkt ergens door te schieten.
Ik zie wel dat de inhoud uit de velden niet gekopieerd worden naar de andere sheet


Code:
Sub Toevoegen()
 'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
 Sheets("bestand").Visible = True
 Sheets("bestand").Select
 ActiveSheet.Unprotect Password:="tijger"
 
'check of velden ingevuld zijn
 tel = 0
 For i = 4 To 11
 If IsEmpty(Sheets("invoer").Cells(15, i)) Then MsgBox "U heeft niet al de gegevens ingevuld": i = 11 Else tel = tel + 1
 Next i
 If tel = 8 Then
 
'Tekst van invoer naar bestand kopieren
 With Sheets("bestand")
 .Rows(3).Insert Shift:=xlDown
 Worksheets("invoer").Range("C15:K15").Copy
 With .Range("A3:I3")
 .PasteSpecial xlPasteValues
 .Borders.LineStyle = xlContinuous
 .Interior.Pattern = xlNone
 End With
 Worksheets("invoer").Range("D15:K15").ClearContents
 End With
 End If
 
'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
 ActiveSheet.Protect Password:="tijger"
 ActiveSheet.Visible = False
 Sheets("Invoer").Select
 MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
 End
 
End Sub
 
Laatst bewerkt door een moderator:
Code:
Sub Toevoegen()
'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
Sheets("bestand").Visible = True
Sheets("bestand").Select
ActiveSheet.Unprotect Password:="tijger"

'check of velden ingevuld zijn
tel = 0
For i = 4 To 11
If IsEmpty(Sheets("invoer").Cells(15, i)) Then MsgBox "U heeft niet al de gegevens ingevuld": i = 11 Else tel = tel + 1
[B][U]Exit Sub[/U][/B]
Next i
If tel = 8 Then

'Tekst van invoer naar bestand kopieren
With Sheets("bestand")
.Rows(3).Insert Shift:=xlDown
Worksheets("invoer").Range("C15:K15").Copy
With .Range("A3:I3")
.PasteSpecial xlPasteValues
.Borders.LineStyle = xlContinuous
.Interior.Pattern = xlNone
End With
Worksheets("invoer").Range("D15:K15").ClearContents
End With
End If

'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
ActiveSheet.Protect Password:="tijger"
ActiveSheet.Visible = False
Sheets("Invoer").Select
MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
End

End Sub
 
Bijna heb ik hem:

Code:
Sub Toevoegen()
 'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
 Sheets("bestand").Visible = True
 Sheets("bestand").Select
 ActiveSheet.Unprotect Password:="tijger"
 
'check of velden ingevuld zijn
 tel = 0
 For i = 4 To 11
 If IsEmpty(Sheets("invoer").Cells(15, i)) Then MsgBox "U heeft niet al de gegevens ingevuld": i = 11 Else tel = tel + 1
 Next i
 If tel = 8 Then
 
'Tekst van invoer naar bestand kopieren
 With Sheets("bestand")
 .Rows(3).Insert Shift:=xlDown
 Worksheets("invoer").Range("C15:K15").Copy
 With .Range("A3:I3")
 .PasteSpecial xlPasteValues
 .Borders.LineStyle = xlContinuous
 .Interior.Pattern = xlNone
 End With
 Worksheets("invoer").Range("D15:K15").ClearContents
 End With
 
'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
 ActiveSheet.Protect Password:="tijger"
 ActiveSheet.Visible = False
 Sheets("Invoer").Select
 MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
 End
 End If
 
End Sub
 
Laatst bewerkt door een moderator:
Te vroeg gejuicht. Ik exit Sub ertussen gezet en Enf If verschoven(|want als het gekopieerd wordt dan moet ook die melding komen).
Als ik nu op de knop druk dan schiet ik naar de nadere sheet, maar krijg geen melding of. Er gebeurt niks


Code:
Sub Toevoegen()
'Onderste regels zorgen er voor dat het tabblad bestand zichtbaar en bewerkbaar wordt.
Sheets("bestand").Visible = True
Sheets("bestand").Select
ActiveSheet.Unprotect Password:="tijger"

'check of velden ingevuld zijn
tel = 0
For i = 4 To 11
If IsEmpty(Sheets("invoer").Cells(15, i)) Then MsgBox "U heeft niet al de gegevens ingevuld": i = 11 Else tel = tel + 1
Exit Sub
Next i
If tel = 8 Then

'Tekst van invoer naar bestand kopieren
With Sheets("bestand")
.Rows(3).Insert Shift:=xlDown
Worksheets("invoer").Range("C15:K15").Copy
With .Range("A3:I3")
.PasteSpecial xlPasteValues
.Borders.LineStyle = xlContinuous
.Interior.Pattern = xlNone
End With
Worksheets("invoer").Range("D15:K15").ClearContents
End With


'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
ActiveSheet.Protect Password:="tijger"
ActiveSheet.Visible = False
Sheets("Invoer").Select
MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
End
End If

End Sub
 
Laatst bewerkt door een moderator:
Hoi Tijger,

De Exit Sub is volgens mij overbodig, je wilt immers door tellen en niet uit de Subroutine gaan
Ik zie aan het einde van de code een End los staan

Jeroen
 
Hoi Tijger,

Code:
Fout gevonden, 
Sheets("bestand").Visible = True
Sheets("bestand").Select
ActiveSheet.Unprotect Password:="tijger"
Met de tweede regel activeer je het sheet "bestand" onnodig. Deze regel kan er gewoon uit. Overigens hoef je het werkbad "bestand" niet zichtbaar te maken om er naar toe te schrijven. De eerste regel ook weg laten.

Code wordt nu:
Sub Toevoegen()
Sheets("bestand").Unprotect Password:="tijger"

'check of velden ingevuld zijn
Tel = 0
For i = 4 To 11
    If IsEmpty(Sheets("invoer").Cells(15, i)) Then
        MsgBox "U heeft niet al de gegevens ingevuld": i = 11
    Else
        Tel = Tel + 1
    End If
Next i
If Tel = 8 Then
    'Tekst van invoer naar bestand kopieren
    With Sheets("bestand")
    .Rows(3).Insert Shift:=xlDown
    Worksheets("invoer").Range("C15:K15").Copy
        With .Range("A3:I3")
        .PasteSpecial xlPasteValues
        .Borders.LineStyle = xlContinuous
        .Interior.Pattern = xlNone
        End With
    Worksheets("invoer").Range("D15:K15").ClearContents
    End With
End If
'Activeren van de beveiliging en het onzichtbaar maken van het tabblad bestand
Sheets("bestand").Protect Password:="tijger"
If Tel = 8 Then MsgBox "De gegevens zijn toegevoegd en je kunt nu je document printen." & vbCrLf & "Sluit na het printen je document af!"
End sub

Groet,
Jeroen
 
Laatst bewerkt door een moderator:
Een hele draad met code zonder dat er één berichtje is met de code opgemaakt met de CODE knop.... Niet erg leesbaar jongens! Code is zó veel leesbaarder als je hem netjes opmaakt...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan