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

2x dezelfde code, 1 werkend, 1 niet

Status
Niet open voor verdere reacties.

Andre175

Gebruiker
Lid geworden
2 feb 2018
Berichten
351
op advies zet ik nu meerdere forms in 1 multi page form.

Dacht dat dit niet al te lastig zou zijn, immers de "losse" userforms werken.
Echter er gaat iets fout.

wanneer UfInvoer gestart wordt, doet ie wat ie doen moet.
Dezelfde code in een multi page form geeft foutmelding(en)

variabele niet gedefinieerd....enz

kan iemand mij dit uitleggen waarom het zo niet wil?


Bekijk bijlage Urenlijsten en facturatie volledig - kopie.xlsm
 
Boven de ene heb je wel option explicit gezet (wat ik van harte toejuich!), hetgeen betekent dat je in die module alle variabelen dient te declareren. Boven de andere heb je OPtion explicit weggelaten (wat ik niet aanbeveel), hetgeen betekent dat je variabelen niet hoeft te delcareren.
 
Schoot me te binnen dat ik ergens "on error goto einde" tussen had gezet.
Dit weg gehaald, en idd, daar zit ergens de fout.

Code:
Private Sub CbGezin_Change()
' Page Urenregistratie
        For i = 1 To 4
            Me("TbKind" & i) = vbNullString
        Next i
    With Sheets("Tabel_Kinderen")
'    On Error GoTo einde
        For i = 2 To .Range("C" & Rows.Count).End(xlUp).Row
            If .Cells(i, 5) = CbGezin.List(CbGezin.ListIndex, 0) Then
                j = j + 1
                Me("TbKind" & j) = .Cells(i, 3).Value
                Me("TbAdres") = .Cells(i, 6).Value & " " & .Cells(i, 7).Value & ", " & .Cells(i, 9).Value
            End If
        Next
    End With
'einde:
end Sub

in de regel Me("TbKind" & j) = .Cells(i, 3).Value kan het opgegeven object niet worden gevonden.

Blijf het vreemd vinden dat de code in het ene Uform wel werkt en in de andere Uform niet.


##.. had je reactie nog niet geziet jkpieterse....ga nu ff kijken
 
Laatst bewerkt:
Klopt idd dat bij de ene wel Option Explicit saat en de andere niet.

Option Explicit ff buiten werking gezet, resultaat positief, nu werkt ie wel.

Code:
Public verzameling As New Collection
'Option Explicit
'Dim iRow As Long, i As Long
'Dim rng As Range, fnd As Range
'Dim sFind As String, smessage As String
'Dim Ctrl As Control
'Dim ws As Worksheet
'Dim sn
'Dim j As Long
'Dim c01 As String
'Dim ctl As Control

wanneer Option Explicit wel wordt gebruikt, hoe moeten de laatste 4 variabelen dan worden gedeclareerd?
Dim sn As....
Dim j As....
Dim c01 As....
Dim ctll As...
 
Laatst bewerkt:
sn As Variant, de overige variabelen zijn al juist gedeclareerd.
Overigens moet je variabelen niet bovenaan declareren, tenzij het een soort constanten zijn voor die hele module. Variabelen declareer je normaal binnen de sub die ze gebruikt.
 
Het werkt allemaal weer, nu maar weer verder puzzelen met de volgende Page.
Zal nog ff duren totdat het zover af is wat de bedoeling is, heb er iig nog steeds lol in.

toch een vraag mbt Option Explicit.
De bedoeling is dat de code zo compact mogelijk geschreven wordt.
Zonder Option Explicit wordt de code korter, toch geeft u aan dat met Option Explicit beter is.

wat is nu het voordeel van het gebruik van Option Explicit?
 
Je haalt onmiddelijk spelvouten uit je code en automatisch aanvullen in de VBA editor werkt (tik maar eens de eerste paar letters van een variabele en druk control+spatie). En nog vele andere voordelen.
 
Spelvouten...
Wil me toch een keer een goed boek voor VBA aanschaffen, ondanks dat er genoeg te vinden is op het web.
 
Ga eens in de bieb kijken. De Dummies boeken over Excel VBA zijn prima om mee te starten. Daarna zou ik kijken naar boeken van John Walkenbach.
 
Haal die Option explicit gewoon weg. Jij hebt hem niet nodig.

De Initialize procedure kan eenvoudiger:

Stel het aantal kolommen van de Listbox LbGezinnen in de ontwerpmodus gewoon op 8 en stel daar ook de breedte van de eerste 8 kolommen in. (Analoog voor sommige andere listboxen).

Je kunt voor een aantal andre listboxen de te tonen items ook in de Tag eigenschap zetten (in de onderstaande code nog even met een hyphen ervoor.
Voorbeeld hoe het dan kan gaan worden:

Code:
Private Sub UserForm_Initialize()
' Page Huishoudens

    LbGezinnen.List = [Tabel_Gezinnen].Value
    TbIDgezin.Value = LbGezinnen.List(LbGezinnen.ListCount - 1, 1) + 1
    
'    CbRol1.Tag = "Moeder Vader Oma Opa Familie"     invoeren in design modus
    CbRol1.List = Split(CbRol1.Tag)
    CbRol2.List = CbRol2.List
    
'    CbSoortKontrakt.Tag = "Fexibel Vast"              invoeren in Design modus
    CbSoortKontrakt.List = Split(CbSoortKontrakt.List.Tag)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan