Toon posts:

[VBA6] Combobox vullen o.a.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor school moet ik een programma(tje) schrijven, maar dit is de eerste keer dat ik met VBA werk.
Dit is de code die ik dusver heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Jaar1_Click()
With Combo1
    .AddItem "EC1"
    .AddItem "IS3"
    .AddItem "PG2"
    .AddItem "PM6"
    .AddItem "EN2"
    .AddItem "IO2"
    .AddItem "PAS"
    .AddItem "ISM"
    .AddItem "EC2"
    .AddItem "TR"
    .AddItem "TCO"
    .AddItem "PM82"
    .AddItem "SLB"
   
   End With
   
If Combo1.Text = "ECN" Then
        Uitgebreid.Caption = "Datacom & netwerken"
        ECTS.Caption = "3"
   ElseIf Combo1.Text = "IS3" Then
        Uitgebreid.Caption = "Rapid Application development"
        ECTS.Caption = "3"
    End If
                 
End Sub

Ik heb 2 labels genaamd Uitgebreid en ECTS.
Maar de waardes worden er niet in geladen.
Als ik het na loop lijkt het redelijk te kloppen, maar het werkt niet dus dan zal het niet kloppen.
Hoop dat jullie even zouden willen kijken.

Ben een heel grote newbie qua VBA

Ik heb zelf al een uurtje of 2 gegoogled over de combobox o.a. en ben verschillende fora afgelopen. Heb wel een aantal voorbeelden gezien, maar het was niet zo duidelijk.Meestal ging het om een loop en lieten ze alleen combo1.AddItem zien. Ik werd ook niet echt wijs uit de help functie.

Als ik de replies goed interpreteer betekent het dat ik in de eerste form waar de knop Jaar1 zit de Combo1.AddItem etc al moet laden en dan in de Private Sub Jaar1_Click() de If then moet laten staan.

[ Voor 29% gewijzigd door Verwijderd op 19-04-2005 23:01 . Reden: Toevoeging + Verduidelijking ]


Verwijderd

de additem moet je in het initialiseerevent van de (user)form plaatsen, de test op welk item geklikt wordt, in het change event van combo1. wat er nu gebeurt, is dat je de combobox met items vult en dan test op welke waarde actueel is, terwijl er nog geen keuze gemaakt kon worden door de gebruiker.

  • Ashtaroth
  • Registratie: December 2003
  • Laatst online: 16-02 09:59
Zoals heretic al zie: stop de AddItem om de ComboBox te vullen in je Form_Load event.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik mis wat dingen in dit topic. Wat heb je zelf al gezocht en gevonden? Alleen bovenstaande code? Of heb je meer geprobeerd, en werkte dit niet? Lees even P&W FAQ - De "quickstart" door. :)

Om je code wat duidelijker te maken kun je ook [code] tags gebruiken. Zou je dat even aan willen passen in je startpost? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik heb het nu zo neergezet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub Form_Load()
With Combo1
    .AddItem "EC1"
    .AddItem "IS3"
    .AddItem "PG2"
    .AddItem "PM6"
    .AddItem "EN2"
    .AddItem "IO2"
    .AddItem "PAS"
    .AddItem "ISM"
    .AddItem "EC2"
    .AddItem "TR"
    .AddItem "TCO"
    .AddItem "PM82"
    .AddItem "SLB"
   
   End With
End Sub

Private Sub Jaar1_Click()

   
If Combo1.Text = "EC1" Then
        Uitgebreid.Caption = "Datacom & netwerken"
        ECTS.Caption = "3"
   ElseIf Combo1.Text = "IS3" Then
        Uitgebreid.Caption = "Rapid Application development"
        ECTS.Caption = "3"
    End If
                 
End Sub


En het werkt nog niet.Die Combo1.Text en Uitgebreid.Caption kloppen blijkbaar wel gewoon dus. Ik krijg geen foutmelding helemaal niets.

  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Als jet een combo is moet je eens kijken naar de eigenschappen list en listindex... ik denk dat je dan iets verder komt.

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Volgens mij moet je in de with niet meer gebruik maken van een punt voor je functie:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Load()
With Combo1
    .AddItem "EC1"
    .AddItem "IS3"
    .AddItem "PG2"
    .AddItem "PM6"
    .AddItem "EN2"
    .AddItem "IO2"
    .AddItem "PAS"
    .AddItem "ISM"
    .AddItem "EC2"
    .AddItem "TR"
    .AddItem "TCO"
    .AddItem "PM82"
    .AddItem "SLB"
   
   End With
End Sub

wordt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Load()
With Combo1
    AddItem "EC1"
    AddItem "IS3"
    AddItem "PG2"
    AddItem "PM6"
    AddItem "EN2"
    AddItem "IO2"
    AddItem "PAS"
    AddItem "ISM"
    AddItem "EC2"
    AddItem "TR"
    AddItem "TCO"
    AddItem "PM82"
    AddItem "SLB"
   
   End With
End Sub

My personal videoteek: -Clique-; -NMe- is een snol!


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Wat hierboven staat klopt niet. De punt moet je wel gebruiken.
En in de click van je button zou je dit eens kunnen proberen:

Visual Basic:
1
2
3
4
5
6
7
Select Case combo1.list(combo1.listindex)
  Case "EC1": label1.caption = "hahaha1"
  Case "EC2": label1.caption = "hahaha2"
  Case "EC3": label1.caption = "hahaha3"
  Case "EC4": label1.caption = "hahaha4"
  Case "EC5": label1.caption = "hahaha5"
End Select

[ Voor 54% gewijzigd door sopsop op 20-04-2005 13:55 ]


Verwijderd

Topicstarter
Ik ben er achter wat het een probleem een beetje is. Het werkt nu op de volgende manier: Als ik iets selecteer in de combo box moet ik dat form opnieuw laden voor dat hij de If Then uitvoerd. Samengevat het form moet dus eigenlijk direct worden geladen zodra ik de Combobox aanpas.

De Select Case van hierboven doet het wel maar dan op de zelfde manier als ik net heb beschreven.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Post eens wat je nu hebt en welke controls (type + naam) je op het form hebt staan.

Ik heb het vermoeden dat je niet helemaal snapt hoe VB(A) werkt.

Verwijderd

Topicstarter
Iedereen heel erg bedankt voor jullie hulp. Dit is wat ik nu heb en waar ik mee verder kan. Ik snap nu een beetje hoe die subs zitten enzo
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub Afsluiten_Click()
Unload Me
End Sub

Private Sub Jaar1_Click()
With Combo1
    .AddItem "EC1"
    .AddItem "IS3"
    .AddItem "PG2"
    .AddItem "PM6"
    .AddItem "EN2"
    .AddItem "IO2"
    .AddItem "PAS"
    .AddItem "ISM"
    .AddItem "EC2"
    .AddItem "TR"
    .AddItem "TCO"
    .AddItem "PM82"
    .AddItem "SLB"
   
   End With
End Sub

   Private Sub Combo1_Click()
   
   If Combo1.Text = "EC1" Then
        Uitgebreid.Caption = "Datacom & netwerken"
        ECTS.Caption = "3"
   ElseIf Combo1.Text = "IS3" Then
        Uitgebreid.Caption = "Rapid Application development"
        ECTS.Caption = "3"
   End If
End Sub

[ Voor 48% gewijzigd door Verwijderd op 20-04-2005 15:31 ]


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

En wat gaat er nu niet goed?

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Wat gaat er nu nog fout dan?

Trouwens, aangezien je die combo vult met een button en zoals je het nu doet dat na twee keer klikken er twee keer zoveel data in je combo zit, dat kun je beter zo doen:
code:
1
2
3
4
5
6
7
Private Sub Jaar1_Click()
    With Combo1
        .Clear
        .AddItem "EC1"
        [......]   
    End With
End Sub

Dit kun je trouwens ook in het Form_Load event van je form zetten, dan is die combo gevuld als je je form laadt.

Nog iets: ik zie je code een beetje slordig staan qua inspringen. Zorg dat alles netjes uitgelijnd staat. Dat maakt je code een stuk overzichtelijker. Heb je bij onderhoudt veel profijt van. Net als voldoende commentaar erbij zetten. Sowieso bij iedere Sub of functie met de werking ervan.

Daarnaast adviseer ik je om iedere control van een duidelijke naam te voorzien. Zorg dat je uit die naam kan afleiden welke control (of variabele) het betreft en wat de functie van het ding is. Bijvoorbeeld een combobox waar jaarcodes (of waar de hell je ook mee bezig bent :) ) inzitten zou ik als volgt benoemen: cboJaarCodes en dus niet Combo1.

[ Voor 44% gewijzigd door sopsop op 20-04-2005 17:19 ]


Verwijderd

Topicstarter
ok, ik snap wat je bedoeld. Maar alles gaat goed nu, had de combo1.Clear al gevonden. Het programmatje doet precies wat het moet doen nu. Was er niet op gekomen en het is idd een goede tip om me maar meteen aan te leren netjes met code om te gaan. Maar het probleem was dat die combo box niet mee werkte. Dit is de code die ik uiteindelijk gebruik, maar dan iets ingekort:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Private Sub Afsluiten_Click()
      Unload Me
End Sub

Private Sub Combo1_Click()
   
   If Combo1.Text = "EC1" Then
        Uitgebreid.Text = "Datacom & netwerken"
        ECTS.Text = "3"
   ElseIf Combo1.Text = "IS3" Then
        Uitgebreid.Text = "Rapid Application development"
        ECTS.Text = "3"
   ElseIf Combo1.Text = "DE" Then
        Uitgebreid.Text = "Design ERP"
        ECTS.Text = "3"
   ElseIf Combo1.Text = "PT1" Then
        Uitgebreid.Text = "Projectmanagement (voltijd)"
        ECTS.Text = "3"
   ElseIf Combo1.Text = "MPNL-GEENGVO-04" Then
        Uitgebreid.Text = "Engels Voorbereiding"
        ECTS.Text = "3"
   ElseIf Combo1.Text = "MPNL-GEECWISK-04" Then
        Uitgebreid.Text = "Economische Wiskunde"
        ECTS.Text = "3"
   End If
               
End Sub

Private Sub Menu_Info_Click()
    MsgBox "Blaat", vbHitAndRun, "Info Converter"
End Sub

Private Sub Option1_Click()
    
    With Combo1
        .Clear
        .AddItem "MPNL-GEENGVO-04"
        .AddItem "MPNL-GEECWISK-04"
    End With

End Sub
Private Sub Option2_Click()
    
    With Combo1
        .Clear
        .AddItem "EC1"
        .AddItem "IS3"
    End With

End Sub
Private Sub Option3_Click()
    
    With Combo1
        .Clear
        .AddItem "DE"
        .AddItem "PT1"
     End With

End Sub
Pagina: 1