bestelformulier text boxes, foutmelding "kan methode of het gegevenslid niet vinden"

Status
Niet open voor verdere reacties.

KipKoen

Gebruiker
Lid geworden
17 nov 2015
Berichten
8
Wie kan helpen?

Ik ben voor mijn collega een bestelformulier aan het maken. Het bevat naast twee combo boxes en een command button 44 text boxes (van txt_1 tot en met txt_44) om de hoeveelheden m.b.t. de verschillende producten die hij regelmatig besteld in te kunnen vullen (aangevuld met een hele rits labels, ook genummerd van 1 tot en met 44 (bijvoorbeeld lbl_artcode_1 tot en met lbl_artcode_44).

Als ik vervolgens wat hoeveelheden invul en op de command-button druk krijg ik de melding: "Compileerfout: Kan de methode of het gegevenslid niet vinden". (heb de code rood gemaakt op het punt waar de melding verschijnt)

Dit is de code achter het formulier:

Code:
Private Sub UserForm_Initialize()

    With combo_opdrachtgever_project
    
        .AddItem "Golf Axel, N17 0020 - regulier onderhoud"
        .AddItem "Golf Axel, N17 0040 - regie"
        .AddItem "Golf Lamswaarde"
        .AddItem "Short Golf Cadzand"
        .AddItem "Goese Golf"
        .AddItem "overige projecten"
        
    End With
    
    combo_opdrachtgever_project.Value = ""
    
    
    With combo_afleveren_te
    
        .AddItem "Justaasweg 4, Axel"
        .AddItem "Hulsterseweg 3, Axel"
         
    End With
    
    combo_afleveren_te.Value = ""
        
End Sub




Private Sub cmd_plaats_bestelling_Click()

Dim iRij As Long
Dim i As Integer
Dim x As Integer

Dim hoeveelheid As String
Dim artcode As String
Dim merknaam As String
Dim omschrijving As String
Dim verpakking As String

Dim werkblad As Worksheet
Set werkblad = Worksheets("Bestelling Prograss 2017")

i = 1
x = 44

For i = 1 To x

    hoeveelheid = "txt_" & i
    artcode = "lbl_artcode_" & i
    merknaam = "lbl_merk_" & 1
    omschrijving = "lbl_omschrijving_" & i
    verpakking = "lbl_verpakking_" & i
    
        If Trim(Me[COLOR="#FF0000"].hoeveelheid[/COLOR].Value) = "" Then Next i
        
        Else
        
        ' vindt laatst gebruikte cel in lijst en spring naar volgende rij
        iRij = werkblad.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
            werblad.Cells(iRij, 4).Value = Me.artcode.Value
            werblad.Cells(iRij, 5).Value = Me.merknaam.Value
            werblad.Cells(iRij, 6).Value = Me.omschrijving.Value
            werblad.Cells(iRij, 7).Value = Me.verpakking.Value
            werblad.Cells(iRij, 8).Value = Me.hoeveelheid.Value
        
        End If

Next i

End Sub

Ik zie wel op welk punt het fout gaat, maar weet niet hoe ik de boel zo moet schrijven dat de code e.e.a. uitvoert zoals ik het voor ogen heb: dat ik in ieder geval niet iedere text-box en label apart moet benoemen.

Kan iemand me vertellen hoe ik dit aanpak?

Bij voorbaat mijn dank!
 
Zo op het eerste oog.
Code:
hoeveelheid = me("txt_" & i)
 
Beste Harry,

Bedankt! Dat brengt me al verder. Heb e.e.a. aangepast, maar nu loopt hij op een volgend punt vast en geeft "Compileerfout: ongeldige kwalificatie". Dit kan ik nog niet helemaal plaatsen, hopelijk kan ik nogmaals een beroep op je doen.

Ik heb niet weer de hele code toegevoegd, alleen het (naar mijn idee) relevante stuk:

Code:
Private Sub cmd_plaats_bestelling_Click()

Dim iRij As Long
Dim i As Integer
Dim x As Integer

Dim hoeveelheid As String
Dim artcode As String
Dim merknaam As String
Dim omschrijving As String
Dim verpakking As String

Dim werkblad As Worksheet
Set werkblad = Worksheets("Bestelling Prograss 2017")

i = 1
x = 44

For i = 1 To x

    hoeveelheid = Me("txt_" & i)
    artcode = Me("lbl_artcode_" & i)
    merknaam = Me("lbl_merk_" & 1)
    omschrijving = Me("lbl_omschrijving_" & i)
    verpakking = Me("lbl_verpakking_" & i)
    
        If [COLOR="#FF0000"][B]hoeveelheid[/B][/COLOR].Value = "" Then Next i
        
        Else
        
        ' vindt laatst gebruikte cel in lijst en spring naar volgende rij
        iRij = werkblad.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
            werblad.Cells(iRij, 4).Value = artcode.Value
            werblad.Cells(iRij, 5).Value = merknaam.Value
            werblad.Cells(iRij, 6).Value = omschrijving.Value
            werblad.Cells(iRij, 7).Value = verpakking.Value
            werblad.Cells(iRij, 8).Value = hoeveelheid.Value
        
        End If

Next i

End Sub

Wederom bij voorbaat dank!

Groeten,

Koen
 
Ik vermoed:
Code:
Dim hoeveelheid As [COLOR=#ff0000]object[/COLOR]

in principe heb je geen variabele nodig natuurlijk.

Code:
for i = 1 to 44
 if len(me("txt_"& i)) > 0 then blabla
next i
 
Laatst bewerkt:
Dit is natuurlijk sowieso fout:
Code:
        If hoeveelheid.Value = "" Then Next i
        
        Else
        
        ' vindt laatst gebruikte cel in lijst en spring naar volgende rij
        iRij = werkblad.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
            werblad.Cells(iRij, 4).Value = artcode.Value
            werblad.Cells(iRij, 5).Value = merknaam.Value
            werblad.Cells(iRij, 6).Value = omschrijving.Value
            werblad.Cells(iRij, 7).Value = verpakking.Value
            werblad.Cells(iRij, 8).Value = hoeveelheid.Value
        
        End If

Maak daar dit van:
Code:
        If hoeveelheid.Value <> "" Then
            ' vindt laatst gebruikte cel in lijst en spring naar volgende rij
            iRij = werkblad.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
            werblad.Cells(iRij, 4).Value = artcode.Value
            werblad.Cells(iRij, 5).Value = merknaam.Value
            werblad.Cells(iRij, 6).Value = omschrijving.Value
            werblad.Cells(iRij, 7).Value = verpakking.Value
            werblad.Cells(iRij, 8).Value = hoeveelheid.Value
        End If

En wijzig werblad in werkblad.
 
Laatst bewerkt:
Niet getest zo zonder voorbeeldbestandje.

Code:
Private Sub UserForm_Initialize()
  combo_opdrachtgever_project.List = Split("Golf Axel, N17 0020 - regulier onderhoud|Golf Axel, N17 0040 - regie|Golf Lamswaarde|Short Golf Cadzand|Goese Golf|overige projecten", "|")
  combo_afleveren_te.List = Split("Justaasweg 4, Axel|Hulsterseweg 3, Axel", "|")
End Sub

Code:
Private Sub cmd_plaats_bestelling_Click()
Dim ar(43, 4), t As Long, j As Long
For j = 1 To 44
  If Trim(Me("txt_" & j)) <> "" Then
    ar(t, 0) = Me("txt_" & j)
    ar(t, 1) = Me("lbl_artcode_" & j)
    ar(t, 2) = Me("lbl_merk_" & j)
    ar(t, 3) = Me("lbl_omschrijving_" & j)
    ar(t, 4) = Me("lbl_verpakking_" & j)
    t = t + 1
  End If
Next j
Sheets("Bestelling Prograss 2017").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(ar) + 1, UBound(ar, 2) + 1) = ar
End Sub
 
of:
Code:
combo_afleveren_te.List = array("Justaasweg 4, Axel", "Hulsterseweg 3, Axel")
 
Beste Harry,

Met de If Len(.... gaat het inderdaad wel. Top!

Ik krijg nu alleen nog het volgende: "Compileerfout: ongeldige kwalificatie" (punt waar hij hikt heb ik dik gedrukt rood gemaakt in de code). Ik vermoed dat als dit getackeld is dat hij loopt. Kun je me nog een keer uit de brand helpen (ik hoop hiermee de laatste keer)?

Dit is de aangepaste code:

Code:
Private Sub cmd_plaats_bestelling_Click()

Dim iRij As Integer
Dim i As Integer
Dim x As Integer

Dim hoeveelheid As String
Dim artcode As String
Dim merknaam As String
Dim omschrijving As String
Dim verpakking As String

Dim werkmap As Workbook
Set werkmap = ThisWorkbook
Dim werkblad As Worksheet
Set werkblad = werkmap.Sheets("Bestellingen Prograss 2017")

x = 44

For i = 1 To x

    hoeveelheid = Me("txt_" & i)
    artcode = Me("lbl_artcode_" & i)
    merknaam = Me("lbl_merk_" & 1)
    omschrijving = Me("lbl_omschrijving_" & i)
    verpakking = Me("lbl_verpakking_" & i)
    
        If Len(Me("txt_" & i)) > 0 Then
                
        ' vindt laatst gebruikte cel in lijst en spring naar volgende rij
        iRij = werkblad.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
            werkblad.Cells(iRij, 4).Value = [B][COLOR="#FF0000"]artcode[/COLOR][/B].Value
            werkblad.Cells(iRij, 5).Value = merknaam.Value
            werkblad.Cells(iRij, 6).Value = omschrijving.Value
            werkblad.Cells(iRij, 7).Value = verpakking.Value
            werkblad.Cells(iRij, 8).Value = hoeveelheid.Value
        
        End If
        
Next i

End Sub
 
Beste Koen,

Bovenste regel van post 5 al geprobeerd op al je andere objecten, of zonder je variabelen?

Tip: plaats anders een bestand.
 
Een stringvariabele kent geen .value. Lees alle reacties nogmaals door en doe er je voordeel mee.
 
Sorry! Ik heb een aantal berichten over het hoofd gezien.

Heb e.e.a. aangepast en werkt nu naar behoren.

Dus nogmaals voor allen: bedankt voor de hulp! Ik kan weer vooruit.

Groeten,

Koen
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan