controleren of er al iets in een combobox zit

Status
Niet open voor verdere reacties.

nickskethisniks

Gebruiker
Lid geworden
26 mei 2007
Berichten
8
Hallo,

Ik geef bijvoorbeeld een reeks namen in een combobox, maar ik wil niet dat er bijvoorbeeld
2keer dezelfde naam in de combobox zit, hoe kan ik dat het beste doen?

met een for lus ofzo?

voorlopig heb ik dit:

If cboklas="" then

msgbox "u moet wel iets invullen of selecteren"

else

intteller = cboklas.listcount+1

for inttellertwee = 1 to intteller
if cboklas = strklassen(inttellertwee) then
msgbox "U heeft deze klas al opgeslagen"
cboklas = ""

else

for intteller = 1 to 1
strklas =cboklas
strklassen(intteller)= strklas
cboklas.additem strklassen(intteller)
strklas= ""
next intteller
end if

next inttellertwee

end if


alvast bedankt
nick
 
Dag Nick,

Met de volgende code zou het moeten lukken:

Code:
  For i = 1 To AantalRijen
    s = Cells(i, 1).Value
    With ComboBox1
      .Text = s
      If .ListIndex < 0 Then
        For j = 0 To .ListCount - 1
          If s < .List(j) Then Exit For
        Next
        .AddItem s, j
      End If
    End With
  Next

s = de waarde van de eerste cel van de rijen in een sheet
Je geeft de eigenschap Text van de combo de waarde s.
Staat s al in de combo dan is listindex 0 of hoger, zo niet dan is de waarde -1
Als < 0 dan wordt gezocht naar de alfabetische positie en wordt s ingevoegd.

Gegroet,

Axel
 
bedankt voor je reactie!!

alleen geraak ik er niet uit wijs
zoals bijvoorbeeld, wat bedoel je met cells (is dit een funcie want visual basic herkent dit blijkbaar niet)
 
Dag Nick,

Ik neem aan dat je in Excel werkt en dan is Cells(a,b).Value de inhoud van de cel op het kruispunt van rij a en kolom b

Activeworkbook.Sheets(1)
For i = 1 to AantalRijen
.Cells(i,1).Value Dit is dus de waarde van de cel in rij i en kolom 1


Next

Als je het anders doet, voeg dan wat je gemaakt heb als bijlage toe.

Gegroet,

Axel.
 
Ok,

Ik zit in visual basic te werken ( de gewone microsoft visual basic 6.0 in de standard exe)

Ik heb 2 comboboxen
1) voor de klassen
2) voor de Namen

Nu wil ik de klassen en namen manueel invullen op het formulier invullen maar ik zou er dus willen voorzorgen dat ik niet 2 keer dezelfde klassen/namen in de combobox heb zitten, en in de ene klas zitten niet dezelfde leerlingen dan in de andere klas
 
Dag Nick,

Je kunt een eigenschap van de combobox inschakelen waarmee de input wordt vergeleken met wat er al in zit.

ComboBox1.MatchEntry = fmMatchEntryComplete

En je hoeft niet op een commandbutton te klikken om de invoer in de combobox op te slaan. Met onderstaande code gebruik je de Enter-toets:
Code:
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Dim i As Integer
  
  Select Case KeyCode
  Case 13
    For i = 0 To ComboBox1.ListCount - 1
      If ComboBox1.Text < ComboBox1.List(i) Then Exit For
    Next
    ComboBox1.AddItem ComboBox1.Text, i
    ComboBox1.Text = ""
    KeyCode = 0
  End Select
End Sub

Verder lijkt het me wel handig om de invoer in een bestand op te slaan, anders ben je je gegevens kwijt en tevens heb je het bestand nodig om in het geval je van klas verandert de bijbehorende namen in de tweede combobox te zetten.

Gegroet,

Axel.
 
Hij geeft een compile error: (user-defined type not defined)


bij dit:

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 
Dag Nick,

Visual Basic 6 (VB) en Visual Basic for Applications (VBA) lijken wel veel op elkaar maar er zijn verschillen en dat is hier waarschijnlijk het geval.
Het idee wat ik je aan de hand doe werkt wel, maar je zult het wel voor VB moeten vertalen en daar kan ik je niet bij helpen.

Gegroet,

Axel.
 
Je bent toch heel hard bedankt om me te helpen:thumb:

Ik heb inmiddels al een methode/code bedacht die werkt, ik zal deze in een vrij moment
nog wel eens in mijn topic zetten

alvast bedankt;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan