For statement

Status
Niet open voor verdere reacties.

Martindefries

Gebruiker
Lid geworden
3 jan 2008
Berichten
6
Goedenavond bezoekers,

Sinds kort ben ik bezig om een factuur programma in VBA 6.0 te schrijven, ik heb al enkele jaren ervaring met PHP. Met PHP kan ik inmiddels super uit de voeten, maar het is tijd voor wat nieuws!

Het lijkt allemaal wel op elkaar, al moet ik nog wel vreselijk wennen aan de opbouw van alles, daarom bij deze een klein vraagje... :rolleyes:

Code:
 Dim x As Integer
    For x = 1 To 10
        ComboBox(x).Clear
        ComboBox(x).AddItem ("19")
        ComboBox(x).AddItem ("6")
        ComboBox(x).ListIndex = 0
    Next

Ik heb tien ComboBoxes, nu wou ik dit op de bovenstaande manier even laten werken. Helaas loop ik alleen maar tegen foutmeldingen aan, wat doe ik precies verkeerd?

Misschien kan iemand mij ook vertellen waar ik een soort php.net voor Visual Basic can vinden.

Wat je reactie ook is, in ieder geval bedankt! :thumb:
 
Laatst bewerkt door een moderator:
Het is jammer dat je de foutmelding niet even gepost heb. Allereest neem ik aan dat je VB6 bedoeld?
Code:
For x = 1 To 10
Next
VB begint normaal gesproken bij 0 te tellen, je zult dus waarschijnlijk een subscript out of boundaries foutmelding krijgen als x de waarde 10 bereikt.
Dus:
Code:
For x = 0 To 9
Next

Zou de oplossing moeten zijn.

Ik weet niet precies wat je bedoeld met php.net voor VB6? Je kunt in VB6 gewoon DAO of ADO gebruiken. Of misschien bedoel je ASP/VBScript om in HTML te zetten ipv php?
 
ASP.NET is net zoiets als PHP.
Alleen is ASP.NET van Microsoft.
Je kan er met VB.Net in programmeren, maar ook met c#.

Als webserver gebruik je dan geen apache, maar IIS ( Internet Information Server )

Kijk maar eens hier
 
Bedankt voor de reacties. Het is inderdaad VB6, mijn bedoeling is om 10 maal die combobox te tonen, het ziet er nu zo uit.

Code:
Private Sub FillCombos()
    
    ComboBox1.Clear
    ComboBox1.AddItem ("19")
    ComboBox1.AddItem ("6")
    ComboBox1.ListIndex = 0
    ComboBox2.Clear
    ComboBox2.AddItem ("19")
    ComboBox2.AddItem ("6")
    ComboBox2.ListIndex = 0
    ComboBox3.Clear
    ComboBox3.AddItem ("19")
    ComboBox3.AddItem ("6")
    ComboBox3.ListIndex = 0
    ComboBox4.Clear
    ComboBox4.AddItem ("19")
    ComboBox4.AddItem ("6")
    ComboBox4.ListIndex = 0
    ComboBox5.Clear
    ComboBox5.AddItem ("19")
    ComboBox5.AddItem ("6")
    ComboBox5.ListIndex = 0
    ComboBox6.Clear
    ComboBox6.AddItem ("19")
    ComboBox6.AddItem ("6")
    ComboBox6.ListIndex = 0
    ComboBox7.Clear
    ComboBox7.AddItem ("19")
    ComboBox7.AddItem ("6")
    ComboBox7.ListIndex = 0
    ComboBox8.Clear
    ComboBox8.AddItem ("19")
    ComboBox8.AddItem ("6")
    ComboBox8.ListIndex = 0
    ComboBox9.Clear
    ComboBox9.AddItem ("19")
    ComboBox9.AddItem ("6")
    ComboBox9.ListIndex = 0
    ComboBox10.Clear
    ComboBox10.AddItem ("19")
    ComboBox10.AddItem ("6")
    ComboBox10.ListIndex = 0
    
End Sub

Deze functie kan korter, daarom wou ik het in een loopje zetten zodat de code korter wordt.

Code:
Private Sub FillCombos()
    
    Dim x As Integer
    For x = 1 To 10
        ComboBox(x).Clear
        ComboBox(x).AddItem ("19")
        ComboBox(x).AddItem ("6")
        ComboBox(x).ListIndex = 0
    Next
    
End Sub

Het probleem is echter als ik het zo als hierboven maak, komt de melding 'Compileerfout: Sub of Function is niet gedefineerd'. Wie kan mij precies vertellen wat er fout gaat?
 
Laatst bewerkt:
Je hebt nu 10 controls
ComboBox1
ComboBox2
etc
die moet je even aanpassen en allemaal cmbComboBox (of iets anders uiteraard) noemen, en dan het property Index steeds één verhogen. Je hebt dan dus een
ComboBox(0), ComboBox(1), etc

Dit heet een control array
 
Het probleem is echter als ik het zo als hierboven maak, komt de melding 'Compileerfout: Sub of Function is niet gedefineerd'.

En dit komt dus doordat de compiler op zoek gaat naar een functie/sub Combobox met als parameter (x). Zodra je een control array maakt weet de compiler wat je bedoelt.
 
Okay, klinkt goed. Maar als ik de tweede aan wil passen krijg ik de melding 'dubbelzinnige naam', waar moet ik de naam dan wijzigen naar cmbComboBox?
 
Ik ben bang dat je ze één voor één moet doen. Wellicht gaat het het snelst om ze allemaal (behalve de eerste) te verwijderen, dan deze eerste de juiste naam geven en index op 0 zetten, en vervolgens 9 x kopieren - de index property wordt dan automatisch opgehoogd.

Nog even een andere oplossing (niet zo netjes, maar wel handig om eens gezien te hebben denk ik)

Code:
Private Sub Form_Load()
 Dim i As Integer
 Dim strControl As String
 Dim cmb As ComboBox
 
  For i = 1 To 10
    strControl = "ComboBox" & CStr(i)
    Set cmb = Me.Controls(strControl)
    cmb.AddItem "19"
  Next
End Sub

Je maakt nu gewoon een string, en zoek dan op het form naar een control met die naam.
 
He, als ik ze allemaal verwijder - behalve de eerste met de naam cmbComboBox - en vervolgens weer kopieer krijgt deze de naam ComboBox21, hoe en waar kan ik die index op 0 zetten?

Tabindex hebben we wel, maar deze is voor de tab. :confused:

Ik leer het liever op de juiste manier, anders zit over een paar jaar mijn code, ehh.... niet netjes in elkaar.... In ieder geval bedankt voor je inzet!
 
Ik leer het liever op de juiste manier, anders zit over een paar jaar mijn code, ehh.... niet netjes in elkaar....

Zo denk ik er ook over. De andere methode kan wel eens handig zijn voor andere situaties. Je kunt het maar eens gezien hebben.

Voor index: zie bijlage
 

Bijlagen

  • vb6.jpg
    vb6.jpg
    52,9 KB · Weergaven: 34
Zou je eens naar de bijlage willen kijken, want het klinkt misschien ***lig, maar er is helemaal geen index.. :confused:
 

Bijlagen

  • combobox_index.jpg
    combobox_index.jpg
    99,9 KB · Weergaven: 22
Het is inderdaad VB6

Volgens mij zit je met VBA in Word en niet met Visual Basic 6! Geeft op zich niet, maar dan bestaat het property index niet en zul je dus aan de gang moeten met de alternatieve code die ik je gegeven had (of alsnog overschakelen naar VB6)
 
Hmm, okay, allemaal lastig. Maar ik laat me niet uit het veld slaan, ik ga met die code die je eerder gaf aan de slag. In ieder geval bedankt!! Heb je toevallig nog goede tips?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan