• 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 Then statement Userform

Status
Niet open voor verdere reacties.

Ralf1991

Gebruiker
Lid geworden
10 okt 2014
Berichten
61
Beste helper,

Mijn vraag gaat over de userform in bijgevoegd bestand en dan om onderstaand stukje vba. Bekijk bijlage Station1 - Copy.xlsm

Code:
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
If UitTijd.Value > 1 Then
c01 = [Medewerker1] & "|" & [OrderNumber] & "|" & [LijnNumber]
For Each cl In Range("A:A").SpecialCells(2)
c02 = cl.Value & "|" & cl.Offset(, 1).Value & "|" & cl.Offset(, 2).Value
If c01 = c02 Then
Set r = Range("A1:G1").Find("uit")
Cells(cl.Row, r.Column).Value = UitTijd.Value
Exit For
End If
Next
Cells(emptyRow - 1, 6).Value = Code.Value
Else
Cells(emptyRow, 1).Value = Medewerker1.Value
Cells(emptyRow, 2).Value = OrderNumber.Value
Cells(emptyRow, 3).Value = LijnNumber.Value
If InTijd.Value > 0 Then Cells(emptyRow, 4).Value = InTijd.Value
If InTijd.Value > 0 Then Cells(emptyRow, 7).Value = Format(Now(), "d-m-yyyy")
Cells(emptyRow, 6).Value = Code.Value
End If

Bovenstaande code ziet nu niet of er een waarde groter dan 0 in het vakje UitTijd staat. Ook al staat er niks in UitTijd dan voert ie nog steeds de UitTijd in en schiet ie door naar het volgende.

Moet ik het stukje If UitTijd.Value > 1 Then wellicht anders formuleren?

Om mijn vraag te verduidelijken. Als je in de userfrom bij Medewerker1, Ordernumber, lijnnummer en Intijd waarde 1 invult dan wordt er in sheet2 niks ingevuld.

Bedankt.
 
Laatst bewerkt:
@ExcelAmateur, dat werkt helaas ook niet

Thoralf,
Dit kijkt of er een waarde staat ingevuld in de userfrom in vakje UitTijd. Als dit zo is dan moet de macro zoeken naar de cel waar de waarde UitTijd ingevuld moet worden.
Als er geen waarde staat ingevuld dan gaat ie verder bij:
Else
Cells(emptyRow, 1).Value = Medewerker1.Value
 
Ik zou beginnen met het herschrijven van de code. Dit is werkelijk onleesbaar. Maak gebruik van inspringen. Voor 8 medewerkers 8 keer dezelfde code gebruiken is ook niet erg logisch. En zeker niet als het voor de eerste medewerker al niet werkt. Maar zo zijn we allemaal begonnen dus maakt niet uit.:d

Het is mij niet helemaal duidelijk wat je wil maar ik denk dat dit in de buurt komt.

Code:
Private Sub Invoeren_Click()
Dim emptyRow As Long
With Sheets("Sheet2")
    emptyRow = WorksheetFunction.CountA(.Range("A:A")) + 1
    If Not UitTijd.Value = "" Then
        c01 = [Medewerker1] & "|" & [OrderNumber] & "|" & [LijnNumber]
        For Each cl In .Range("A:A").SpecialCells(2)
            c02 = cl.Value & "|" & cl.Offset(, 1).Value & "|" & cl.Offset(, 2).Value
            If c01 = c02 Then
                Set r = .Range("A1:G1").Find("uit")
                .Cells(cl.Row, r.Column).Value = UitTijd.Value
                Exit For
            End If
        Next
        .Cells(emptyRow - 1, 6).Value = Code.Value
    Else
        .Cells(emptyRow, 1).Value = Medewerker1.Value
        .Cells(emptyRow, 2).Value = OrderNumber.Value
        .Cells(emptyRow, 3).Value = LijnNumber.Value
        If InTijd.Value > 0 Then .Cells(emptyRow, 4).Value = InTijd.Value
        If InTijd.Value > 0 Then .Cells(emptyRow, 7).Value = Format(Now(), "d-m-yyyy")
        .Cells(emptyRow, 6).Value = Code.Value
    End If
End With

Voor de ander 7 heb ik niet gekeken.:)
 
VenA, Bedankt! En bedankt voor je Tips.

If Not UitTijd.Value = "" Then is de doorslag en zorgt ervoor dat me code werkt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan