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

Uitleg bij code graag

  • Onderwerp starter Onderwerp starter ridan
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ridan

Gebruiker
Lid geworden
7 jan 2007
Berichten
36
Enige tijd geleden heeft gast0660 me uit de nood geholpen met een uitstekend werkend formulier.
Ondertussen is dit al aangepast naar mijn noden , maar in onderstaande code vind ik mijn weg niet terug ( lees begrijp ik niet )
Kan er iemand hier een beetje vertaling aan geven.

Alvast bedankt
Danny


Code:
  Private Sub CT_25_Change()
On Error Resume Next
 lijst = [data_tbl].Value ' sheet gegevens
        arg = 0
        For i = 1 To UBound(lijst)
            If InStr(1, lijst(i, 2), CT_25, vbTextCompare) > 0 Then
                arg = arg + 1
            End If
        Next i
        ReDim nwlijst(arg - 1, 700)
        arg = 0
        For i = 1 To UBound(lijst)
            If InStr(1, lijst(i, 2), CT_25, vbTextCompare) > 0 Then
                For k = 1 To 15
                    nwlijst(arg, k - 1) = lijst(i, k)
                Next k
                arg = arg + 1
            End If
        Next
        LB_00.List = nwlijst
End Sub
 
Zonder bestandje erbij is het een beetje gokken wat er precies gebeurt. Mij lijkt het dat er dubbel werk wordt gedaan. Maar in essentie wordt je gegevenslijst ingelezen in de variabele Lijst, en wordt daarvan eerst de nieuwe dimensie bepaald (in de eerste loop) en wordt met de Redim de matrixvariabele nwLijst vastgelegd. Vervolgens wordt in de tweede lus, op basis dus van exact dezelfde bronlijst (vandaar dat ik me afvraag of het niet handiger kan) de lijst nogmaals gevuld, maar nu op basis van 15 kolommen. Uiteindelijk wordt de matrixvariabele aan een keuzelijst toegewezen. Als je in de tweede For regel op <F9> klikt en de procedure uitvoert, stopt de code daar en kun je met <F8> regel voor regel doorlopen, zodat je kunt zien wat de code doet.
Daarna de pauzeregel uiteraard weer weghalen met <F9>.
 
Bedankt OctaFish.
Straks nog eens trachten te ontrafelen wat de code juist doet.
grts
Danny
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan