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

EXCEL VBA: Sub herhalen voor iedere regel tot einde, met if-else

Status
Niet open voor verdere reacties.

tijmen_4real

Gebruiker
Lid geworden
20 apr 2005
Berichten
338
Hoi,

Ik heb een Excel met hierin een knop die aan een actie gekoppeld is:

Code:
Private Sub CommandButton1_Click() 'sub voor actie bij bevestiging
Dim actueleRegel As String
actueleRegel = 6
If Sheets("XO").Range("C3").Value = "" Then
    MsgBox ("Kies de kleur van het materiaal om verder te gaan")
    End If
If Sheets("XO").Range("F6").Value = "" Then
    MsgBox ("Kies de type materiaal om verder te gaan")
    End If
If Sheets("XO").Range("E6").Value = "" Then
    MsgBox ("Kies de fillerkleur om verder te gaan")
    End If
If Sheets("XO").Range("C2").Value = "" Then
    MsgBox ("Vul het VO-nummer in om verder te gaan")
Else
    'Variabele onderdelen op label
    Sheets("Label").Range("C1").Value = "Type: " & Sheets(2).Range("F" & actueleRegel).Value 'Type materiaal
    Sheets("Label").Range("C3").Value = "Filler: " & Sheets(2).Range("E" & actueleRegel).Value 'Fillerkleur
    Sheets("Label").Range("A4").Value = "XO - " & Sheets(2).Range("A" & actueleRegel).Value 'Naam klant + type boot
    Sheets("Label").Range("A5").Value = Sheets(2).Range("B" & actueleRegel).Value 'Omschrijving onderdeel
    Sheets("Label").Range("A6").Value = "Parts no.: " & Sheets(2).Range("C" & actueleRegel).Value 'Nummer onderdeel
    'Vaste onderdelen op label
    Sheets("Label").Range("C2").Value = "Kleur: " & Sheets(2).Range("C3").Value 'Kleur materiaal ** VAST **
    Sheets("Label").Range("A7").Value = "VO-nummer: " & Sheets(2).Range("C2").Value 'VO-nummer ** VAST **
    Call printLabels
    End If
End Sub

Sub printLabels()
Dim actueleRegel As String
actueleRegel = 6
Dim aantalLabels As String
aantalLabels = Sheets(2).Range("H" & actueleRegel).Value 'Aantal te printen etiketten definiëren
Sheets(4).Range("A1:C9").PrintOut Copies:=aantalLabels, Collate:=True
Call emptyLabel 'Label legen voor volgende
'regel herhalen tot laatste regel met waarde in kolom H (-1)
End Sub

De VBA werkt voor een testregel (6) prima, maar nu wil ik graag dat hij deze loopt en de printLabels uitvoert voor iedere regel in kolom H die een waarde heeft die groter is dan 0. Hoe werkt zoiets? Moet ik dan eerst het einde van de kolom bepalen, de loop inzetten en dan een if-else toevoegen?
 
Doe er een voorbeeldbestandje bij, dat kijkt makkelijker. En 'Call printlabels' wordt al sinds Excel 95 geloof ik niet meer gebruikt; Call is namelijk al jaren overbodig.
 
Maar je krijgt dan zoiets:
Code:
Sub printLabels()
Dim actueleRegel As String, aantalLabels As String, LastRow As Integer
    
    With Sheets(2)
        LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
    End With
    For i = 2 To LastRow
        If Sheets(2).Range("H" & i).Value > 0 Then
            aantalLabels = Sheets(2).Range("H" & i).Value
            Sheets(4).Range("A1:C9").PrintOut Copies:=aantalLabels, Collate:=True
            emptyLabel 'Label legen voor volgende
        End If
    Next i
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan