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

Keuze lijst vullen bij openen excel userform.

Status
Niet open voor verdere reacties.

Withaar

Verenigingslid
Lid geworden
8 apr 2001
Berichten
3.551
Ik heb een userform met daarop diverse tekstvelden en 1 keuzelijst (listbox).

Als ik de userform open wordt deze code geactiveerd.

Code:
Private Sub UserForm_Activate()
    txtVoornaam.Value = Sheets("Personen").Cells(2, 1).Value
    txtVV.Value = Sheets("Personen").Cells(2, 2).Value
    txtAchtenaam.Value = Sheets("Personen").Cells(2, 3).Value
    cboVereniging.Value = Sheets("Personen").Cells(2, 4).Value
    txtLidnr.Value = Sheets("Personen").Cells(2, 5).Value
    txtStaat.Value = Sheets("Personen").Cells(2, 6).Value
    txtPC.Value = Sheets("Personen").Cells(2, 7).Value
    txtPlaats.Value = Sheets("Personen").Cells(2, 8).Value
    txtLand.Value = Sheets("Personen").Cells(2, 9).Value
    txtTelefoon.Value = Sheets("Personen").Cells(2, 10).Value
    txtEmail.Value = Sheets("Personen").Cells(2, 11).Value
    txtOpm.Value = Sheets("Personen").Cells(2, 12).Value
End Sub

De userform wordt dus gevuld met de waardes uit rij 2 van het tabblad Personen.
Dit gaat zonder problemen voor de tekstvelden, echter niet met de waarde uit de keuzelijst;
cboVereniging.Value = Sheets("Personen").Cells(2, 4).Value

Ik vermoed omdat de keuzelijst een 'lijstnummer' verwacht en niet een tekstwaarde.
Hoe los ik dit op?
 
Ja... heb ik ook al wat geprobeerd in die richting, maar ik toch er toch niet echt uit.
Heb je voorbeeld/link naar voorbeeld?

De verzameling heet 'Vver' en wordt via Naam dynamisch gevuld via;
Code:
=VERSCHUIVING(Verenigingen!$A$1;0;0;AANTALARG(Verenigingen!$A:$A);1)
En ik weet dat ik zo ook de kolomkop in m'n verzameling heb, maar niet iedereen is lid van een club, in dat geval kan je de ' kolomkop' kiezen.

Bv
Code:
    With Vver
        For i = 0 To .ListCount
            If .Selected(i) Then
                txtVereniging.Value.List (i)
            End If
        Next i
    End With
werkt helaas niet.
 
Laatst bewerkt:
Doe eens een simpel bestandje Withaar. Dan wordt het gelijk duidelijk.
 
In een poging een bestandje voor helpmij te maken ben ik zelf al weer verder gekomen.
Lus was/is niet nodig.

Heb nu wel weer een ander probleem maar ga daar nu eerst een nachtje over slapen ;)
 
Nauw, toch nog maar even met een bijlage.

Nu gaat het weg schrijven (opslaan) opeens niet meer goed...
 

Bijlagen

  • Listbox.zip
    32,1 KB · Weergaven: 170
Laatst bewerkt:
Gebruik ook eens een With-End With statement:

Code:
With Sheets("Personen").Cells(lCurrentRow, 1)
        .Offset(, 0).Value = Me.txtVoornaam.Value
        .Offset(, 1).Value = Me.txtVV.Value
        .Offset(, 2).Value = Me.txtAchtenaam.Value
        .Offset(, 3).Value = Me.cboVereniging.Value
        .Offset(, 4).Value = Me.txtLidnr.Value
        .Offset(, 5).Value = Me.txtStaat.Value
        .Offset(, 6).Value = Me.txtPC.Value
        .Offset(, 7).Value = Me.txtPlaats.Value
        .Offset(, 8).Value = Me.txtLand.Value
        .Offset(, 9).Value = Me.txtTelefoon.Value
        .Offset(, 10).Value = Me.txtEmail.Value
        .Offset(, 11).Value = Me.txtOpm.Value
        .Offset(, 12).Value = Format(Now, "yyyy/mm/dd hh:nn")
    End With

Wigi
 
Excel userform: Combobox invoer en scrollen door database

Ik ben er uit, wat ik zocht is; "BoundValue"

N.b. ik ben toch maar voor de combo box gegaan ipv een listbox, dat wel.

Voor wie geinteresseerd is zie bijlage.
 

Bijlagen

  • Combobox invoer en scrollen door database v1.0.zip
    22,7 KB · Weergaven: 242
Withaar,

Bedankt voor de oplossing en je voorbeeld file. Staat ondertussen bij mijn favorieten :).

Zou je de vraag nog op opgelost willen plaatsen? :D
Bedankt.

ps. Tip van Wigi in post 8 is erg handig als je de tabnamen nog wel eens wil veranderen.
Een vervolg op deze tip is misschien wel de set functie om een variabele een sheetnaam mee te geven, waarna je deze variabele mee neemt in de code regels.
Code:
Private Sub userform_Activate()

    lCurrentRow = 2
    
    [COLOR="Red"]Set MyRange = Sheets("Personen")[/COLOR]
    
    txtVoornaam.Value = [COLOR="red"]MyRange[/COLOR].Cells(lCurrentRow, 1).Value
    txtVV.Value = MyRange.Cells(lCurrentRow, 2).Value
    txtAchtenaam.Value = MyRange.Cells(lCurrentRow, 3).Value
    
    cboVereniging.Value = MyRange.Cells(lCurrentRow, 4).Value
    
    txtLidnr.Value = MyRange.Cells(lCurrentRow, 5).Value
    txtStaat.Value = MyRange.Cells(lCurrentRow, 6).Value
    txtPC.Value = MyRange.Cells(lCurrentRow, 7).Value
    txtPlaats.Value = MyRange.Cells(lCurrentRow, 8).Value
    txtLand.Value = MyRange.Cells(lCurrentRow, 9).Value
    txtTelefoon.Value = MyRange.Cells(lCurrentRow, 10).Value
    txtEmail.Value = MyRange.Cells(lCurrentRow, 11).Value
    txtOpm.Value = MyRange.Cells(lCurrentRow, 12).Value
    
End Sub

Zodat je alleen in het begin van je sub de verschillende bladnamen hoeft op te nemen.

Bestandje weer bijgevoegd met deze twee tips erin. Niet om wijs te doen maar om elkaar te helpen.
 

Bijlagen

  • Combobox invoer en scrollen door database v1.0.zip
    22,5 KB · Weergaven: 93
Laatst bewerkt:
Prima tip! Ga ik zeker mee nemen in de verder uitwerking.

N.b. Ik zal nog even uitleggen waarom het laatste record leeg is.
Zodat je, als je wat je zocht niet tegen kwam direct verder kan met het invoeren van een nieuw persoon.

Er is nog wel iets anders dat me stoor, als je gaat scrollen met vorige en volgende terwijl je bezig was met invoer/wijzigingen in een bestand krijg je geen waarschuwing dat je die data kwijt raakt omdat deze niet opgeslagen wordt. Nu zou je bij elke scrol stap de data eerst weg kunen schrijven, maar een soort controle is .. nu ik het type bedenk ik dat het er in ieder geval niet sneller door zal worden, dus is telkens wegsschrijven misschien toch niet zo'n gek idee, of heeft iemand een beter idee?

Wat ik verder nog wil toevoegen is dat als je op het label klikt van bv vereniging dat je dan in een soort gelijk scherm komt, maar dan voor het muteren van Verenigings gegevens.
En als je bv op het label Email klik, dat adres gebruikt wordt voor een nieuw mailtje...

Nog genoeg dingen om mee te doen dus, en ook de layput van zo'n UserForm is nou niet je van dat... kun je iets met kleur doen, dat blauw in een andere kleur of zo?

T.a.v. de tabnaam, een tabblad heeft toch ook een (Naam), die veranderd in principe niet of in ieder geval niet zo snel als de zichtbare naam van elk tabblad, zou het niet handiger zijn daar naar de verwijzen?
En zo ja, hoe doe je dat dan?
 
Laatst bewerkt:
Withaar,

Bekijk deze code eens:
Code:
Dim lCurrentRow As Long
Dim legeregel As Long

Private Sub cmdCancel_Click()
    Unload Me
End Sub

Private Sub cmdClear_Click()
Dim ctl As Control

    lCurrentRow = Sheets("Personen").UsedRange.Rows.Count + 1

    For Each ctl In Me.Controls
        If TypeName(ctl) = "TextBox" Or TypeName(clt) = "ComboBox" Then
            ctl.Value = ""
        End If
    Next ctl

End Sub

Private Sub cmdOk_Click()

    If Me.txtAchtenaam.Value = "" Then
        MsgBox "Achternaam is verplicht.", vbExclamation, "Achternaam"
        Exit Sub
    End If
    
    With Sheets("Personen")
        .Cells(lCurrentRow, 1).Value = Me.txtVoornaam.Value
        .Cells(lCurrentRow, 2).Value = Me.txtVV.Value
        .Cells(lCurrentRow, 3).Value = Me.txtAchtenaam.Value
        .Cells(lCurrentRow, 4).Value = Me.cboVereniging.BoundValue
        .Cells(lCurrentRow, 5).Value = Me.txtLidnr.Value
        .Cells(lCurrentRow, 6).Value = Me.txtStaat.Value
        .Cells(lCurrentRow, 7).Value = Me.txtPC.Value
        .Cells(lCurrentRow, 8).Value = Me.txtPlaats.Value
        .Cells(lCurrentRow, 9).Value = Me.txtLand.Value
        .Cells(lCurrentRow, 10).Value = Me.txtTelefoon.Value
        .Cells(lCurrentRow, 11).Value = Me.txtEmail.Value
        .Cells(lCurrentRow, 12).Value = Me.txtOpm.Value
        .Cells(lCurrentRow, 13).Value = Format(Now, "yyyy/mm/dd hh:nn")
    End With

    MsgBox "Opgeslagen !", vbOKOnly
    
End Sub

Private Sub Volgende_Click()

Set MyRange = Sheets("Personen")

    [COLOR="red"]Vorige.Enabled = True[/COLOR]
    
[COLOR="red"]    If txtVoornaam.Value <> MyRange.Cells(lCurrentRow, 1).Value Then
        response = MsgBox("Gegevens zijn gewijzigd!!! Wilt u deze opslaan?", vbYesNo, "Gegevens gewijzigt!")
        
        If response = vbYes Then
            cmdOk_Click
        End If[/COLOR]
        
    End If
                
    lCurrentRow = lCurrentRow + 1

    [COLOR="Red"]If lCurrentRow = legeregel Then[/COLOR]
        [COLOR="red"]Volgende.Enabled = False[/COLOR]
        MsgBox "Einde database!!!"
        Exit Sub
    End If
    
    txtVoornaam.Value = MyRange.Cells(lCurrentRow, 1).Value
    txtVV.Value = MyRange.Cells(lCurrentRow, 2).Value
    txtAchtenaam.Value = MyRange.Cells(lCurrentRow, 3).Value
    cboVereniging.Value = MyRange.Cells(lCurrentRow, 4).Value
    txtLidnr.Value = MyRange.Cells(lCurrentRow, 5).Value
    txtStaat.Value = MyRange.Cells(lCurrentRow, 6).Value
    txtPC.Value = MyRange.Cells(lCurrentRow, 7).Value
    txtPlaats.Value = MyRange.Cells(lCurrentRow, 8).Value
    txtLand.Value = MyRange.Cells(lCurrentRow, 9).Value
    txtTelefoon.Value = MyRange.Cells(lCurrentRow, 10).Value
    txtEmail.Value = MyRange.Cells(lCurrentRow, 11).Value
    txtOpm.Value = MyRange.Cells(lCurrentRow, 12).Value
End Sub

Private Sub Vorige_Click()

    Set MyRange = Sheets("Personen")
    
    [COLOR="red"]Volgende.Enabled = True[/COLOR]

    [COLOR="red"]    If txtVoornaam.Value <> MyRange.Cells(lCurrentRow, 1).Value Then
        response = MsgBox("Gegevens zijn gewijzigd!!! Wilt u deze opslaan?", vbYesNo, "Gegevens gewijzigt!")
        
        If response = vbYes Then
            cmdOk_Click
        End If[/COLOR]

    If lCurrentRow > 2 Then
        lCurrentRow = lCurrentRow - 1
    Else
        [COLOR="red"]Vorige.Enabled = False[/COLOR]
        MsgBox "Eerste record in database 'persoon'", vbOKOnly
        Exit Sub
    End If
    
    txtVoornaam.Value = MyRange.Cells(lCurrentRow, 1).Value
    txtVV.Value = MyRange.Cells(lCurrentRow, 2).Value
    txtAchtenaam.Value = MyRange.Cells(lCurrentRow, 3).Value
    cboVereniging.Value = MyRange.Cells(lCurrentRow, 4).Value
    txtLidnr.Value = MyRange.Cells(lCurrentRow, 5).Value
    txtStaat.Value = MyRange.Cells(lCurrentRow, 6).Value
    txtPC.Value = MyRange.Cells(lCurrentRow, 7).Value
    txtPlaats.Value = MyRange.Cells(lCurrentRow, 8).Value
    txtLand.Value = MyRange.Cells(lCurrentRow, 9).Value
    txtTelefoon.Value = MyRange.Cells(lCurrentRow, 10).Value
    txtEmail.Value = MyRange.Cells(lCurrentRow, 11).Value
    txtOpm.Value = MyRange.Cells(lCurrentRow, 12).Value
End Sub

Private Sub userform_Activate()

    lCurrentRow = 2
    
    Set MyRange = Sheets("Personen")
    
    [COLOR="Red"]legeregel = Sheets("Personen").Range("C65536").End(xlUp).Row + 1[/COLOR]
    
    txtVoornaam.Value = MyRange.Cells(lCurrentRow, 1).Value
    txtVV.Value = MyRange.Cells(lCurrentRow, 2).Value
    txtAchtenaam.Value = MyRange.Cells(lCurrentRow, 3).Value
    
    cboVereniging.Value = MyRange.Cells(lCurrentRow, 4).Value
    
    txtLidnr.Value = MyRange.Cells(lCurrentRow, 5).Value
    txtStaat.Value = MyRange.Cells(lCurrentRow, 6).Value
    txtPC.Value = MyRange.Cells(lCurrentRow, 7).Value
    txtPlaats.Value = MyRange.Cells(lCurrentRow, 8).Value
    txtLand.Value = MyRange.Cells(lCurrentRow, 9).Value
    txtTelefoon.Value = MyRange.Cells(lCurrentRow, 10).Value
    txtEmail.Value = MyRange.Cells(lCurrentRow, 11).Value
    txtOpm.Value = MyRange.Cells(lCurrentRow, 12).Value
    
End Sub
 
Kan je het is in een bestandje zetten, want als ik de code in het bestaande programma plak werkt het niet zo als ik verwachte had.. ik krijg geen waarschuwingen als ik Vorige of/en Volgende gebruik.
 
Laatst bewerkt:
Withaar,

Hierbij de file met de nieuwe code.
Probeer eens de voornaam van een persoon te wijzigen en dan op volgende of vorige te drukken.
 

Bijlagen

  • Userform - Combobox invoer en scrollen door database v2.0.zip
    15 KB · Weergaven: 126
Oké duidelijk, maar dan dus voor elke veld.... mmm
Nou ik kijk nog wel even of ik het er ga stoppen.

Ik heb ondertussen ook de module voor de verenigingen bijna af.
Er moet nog een koppeling naar de personen voor het kiezen van een contact persoon.
In het veld wil ik eigenlijk de combinatie van voornaam, v.v. en achternaam hebben.
Maar daar ga ik morgen pas mee verder.

Waar ik ook tegen aan loop, maar wat logisch is omdat ik BoundValue gebruik en niet link naar het 'bestand' Verenigingen, is dat als ik de naam van een vereniging aan pas dit niet automatisch gebeurd bij de personen. Maar omdat dat nauwelijks voor zal komen zit ik daar nu niet mee. Zelfde geldt in principe voor de contact persoon, maar de meeste mensen houden hun hele leven de zelfde naam, dus ook daar is het niet zo erg dat dat niet automatisch gaat.

In de bijlage voortgang tot nu toe. Zoals je kan zien ben ik ook wat met de layout bezig geweest. :D Die grijze boxen vind ik maar helemaal niets. :evil:
 

Bijlagen

  • DB zonder bitmaps v.0.2.zip
    26,2 KB · Weergaven: 75
Laatst bewerkt:
een update, versie 0.3 :D
 

Bijlagen

  • DB zonder bitmaps v.0.3.zip
    36 KB · Weergaven: 239
Withaar,

Ziet er aardig uit met je kleurtjes.
Je kan je verenigingnamen koppelen aan je lden mbv een unieke ID.
Je koppelt aan iedere vereniging een uniek nummer. Dit uniek nummer kan je gebruiken om de verenigingsnaam te koppelen aan een werknemer. tevens zet je in dezelfde regel als je vereniging ook je contact persoon en met een offset kom je hier ook aan (probleem is alleen als er meerder contact personen zullen zijn per vereniging, maar ook dit kan je onderbouwen met een uniek ID, bv v1c1 (vereniging 1 met contactpersoon 1).

Horen het wel van je.

Succes.
 
Ledenadministratie in excel

Withaar,

Hierbij de file met de nieuwe code.
Probeer eens de voornaam van een persoon te wijzigen en dan op volgende of vorige te drukken.

Een vraag aan Withaar en\of Demeter:
Onze EHBO-vereniging werkt nu met een dBASE III applicatie die zelf is ontwikkeld.
Dat is nog een echte MS-DOS omgeving. Dat is steeds minder goed te onderhouden.
Toepassingen die geent zijn op EHBO liggen voor het oprapen.
Qua DBF-specs hoeft er niet zo veel te wijzigen.

De oplossing in jullie discussie spreekt mij erg aan.

Is het toegestaan om deze oplossing te gaan gebruiken en om te buigen naar de specificaties van de EHBO-vereniging? Het leek me tenminste even de vraag waard.
Ik heb overigens wel 37 jaar ICT Gezondheidszorg (Zienhuis Informatie Systemen) in de bagage, maar ben echter nog beginnend v.w.b. VBA.

Graag jullie reactie.

groeten
Gerard Roelands
 
Ledenadministratie in excel

Doe gerust Gerard ;)

Succes ermee :thumb:

OK bedankt.:thumb:

Uiteraard bedoelde ik in mijn vraag dat de EHBO oplossingen NIET voor het oprapen lagen.
Maar dat hadden wellicht al begrepen.

Hebben jullie een studietip VBA in de zin van een boek, een site etc.?
Cursussen zit ik niet meer zo op te wachten.

Alvast bedankt
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan