Hallo SoftAid,
Fijn forum hier, mensen met engelengeduld zijn zeldzaam geworden
zo te zien is er ook niets dat de code ervan weerhoud om verder te gaan, ook als je niets invult.
Een For-Next-lus met een Exit-For conditie (indien er iets ingevuld is in Me.TxtCFact) zou dit kunnen verhelpen:
Iets in deze aard....? (Niet getest!!)
Om met het slechte nieuws te beginnen: de code doet niets, of althans het genereert een compileer fout die luidt "
End If zonder blok If" waarbij de eerste "End If" in de code geselecteerd werd.
Mijn eerste gedachte: haal die "End If" gewoon weg, helemaal fout natuurlijk. Tot mijn stomme verbazing selecteert hij nu helemaal aan het eind van de gehele routine de "End Sub" en geeft wederom de compileer fout met als mededeling "
Blok If zonder End If" dus precies het tegenovergestelde van de eerste fout.
Toen dacht ik, zet die "End If" vlak boven die "End Sub". effect had het wel, nml geen foutmelding maar ook geen werking van de code, of te wel hij laat toe dat ik geen factuurnr invul...
Misschien is het even handiger dat ik de gehele routine hier breng:
Private Sub CmndBInvoer_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("2017")
'vind de laatste cel en ga naar de volgende
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'verplichte velden controle
If Trim(Me.TxtFacNr.Value) = "" Then
Me.TxtFacNr.SetFocus
MsgBox "Factuurnummer invullen is verplicht"
Exit Sub
End If
If Trim(Me.TxtDatum.Value) = "" Then
Me.TxtDatum.SetFocus
MsgBox "Datum invullen is verplicht"
Exit Sub
End If
If Trim(Me.TxtSurge.Value) = "" Then
Me.TxtSurge.SetFocus
MsgBox "Vul de Surge factor in"
Exit Sub
End If
'koppel C factuur aan opmerkingen
If Me.TxtC.Value = "C" Then
Me.TxtOpm = "Correctie op factuurnr: " & Me.TxtCFact.Value & Me.TxtOpm.Value
End If
'Verplichte factuurnr vermelding
If Me.TxtC.Value = "C" Then
For Uit = 1 To 100 'of misschien zelfs 100 vervangen door Max ?
If Me.TxtCFact.Value = "" Then
Me.TxtCFact.SetFocus
MsgBox "vul het fatuurnr in"
Else: Exit For ' Als Me.TxtCFact.Value <> is dan "" verlaat dan de routine For Uit
End If
Next Uit
'koppel Annuleer aan opmerkingen
If Me.TxtA.Value = "A" Then
Me.TxtOpm = "Geannuleerde rit " & Me.TxtOpm.Value
End If
'koppel Ritprijs delen aan Opmerkingen
If Me.TxtFactDeel.Value = " " Then
Me.TxtOpm = "Rit word gedeeld met Factuurnr: " & Me.TxtFactDeel.Value & Me.TxtOpm.Value
End If
'hier vullen we de gegevens op de juiste plek in
ws.Cells(iRow, 1).Value = Me.TxtFacNr.Value
ws.Cells(iRow, 4).Value = Me.TxtDatum.Value
ws.Cells(iRow, 5).Value = Me.TxtSurge.Value
ws.Cells(iRow, 6).Value = Me.TxtA.Value
ws.Cells(iRow, 7).Value = Me.TxtB.Value
ws.Cells(iRow, 8).Value = Me.TxtC.Value
ws.Cells(iRow, 11).Value = Me.TxtAfstand.Value
ws.Cells(iRow, 12).Value = Me.TxtTijd.Value
ws.Cells(iRow, 13).Value = Me.TxtDelen.Value
ws.Cells(iRow, 21).Value = Me.TxtOpm.Value
'verwijderen van de invoer
Me.TxtFacNr.Value = ""
Me.TxtDatum.Value = ""
Me.TxtSurge.Value = ""
Me.TxtA.Value = ""
Me.TxtB.Value = ""
Me.TxtC.Value = ""
Me.TxtAfstand.Value = ""
Me.TxtTijd.Value = ""
Me.TxtDelen.Value = ""
Me.TxtOpm.Value = ""
Me.TxtCFact.Value = ""
Me.TxtFactDeel.Value = ""
Me.TxtFacNr.SetFocus
End If
End Sub
Ik heb het gevoel dat de laatste "End If" niet op zijn plek staat maar wel ergens terecht moet komen, al heb ik geen flauw idee waarom