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

Listbox doet het niet!

Status
Niet open voor verdere reacties.

pd1lg

Gebruiker
Lid geworden
10 jun 2015
Berichten
142
Besturingssysteem
Windows 11
Office versie
Office 365
Hallo allemaal,

Ik ben al een hele tijd bezig met excel en vba, maar krijg er nog steeds geen goede inzicht in. En toch wil ik het graag leren.
Ik volg Trevor Easton op zijn website Online PC Learning, en probeer nu mijn eigen database te maken. Aan de hand van zijn programma.

Er zit ergens een fout in de vba, maar ziet het niet. Kan iemand mij laten zien wat ik verkeerd doe. Ik il het graag begrijpen.
 

Bijlagen

Misschien handig om er bij te vertellen wat er op welk moment mis gaat en wat je moet doen om tot dat punt te komen.
Als het om een foutmelding gaat laat dan ook weten welke dat precies is.

Het eerste dat je nog over programmeren moet leren is het gebruik van inspringpunten.
Je hebt nu alles strak onder elkaar tegen de kantlijn staan en dat maakt code onleesbaar.
 
Laatst bewerkt:
De zoek functie werkt niet. Ook al staat het in de database, toch zegt ie elke keer dat het niet bestaat.
Het is net als of de database niet word gezien.
 
Sorry, maar je bent echt niet duidelijk wat er moet worden gedaan om het probleem na te spelen.
Daarnaast is Excel geen Database maar een rekenblad.
 
Sorry, Het gaat om de Userform. Ik heb een tabblad Database, daarin komen alle uitslagen te staan van gespeelde wedstrijden. (Het invoeren van wedstrijden werkt wel)
Als je wilt terug kijken, kun je in het userform het wedstrijd nummer invoeren. Door in het veld links boven het wedstrijd nummer in te voeren en dan op Lookup te klikken, zou de wedstrijd in de Listbox moeten verschijnen. En dat gebeurt niet. Als ik daarna de userform unload, word het wedstrijd nummer wel in het tab blad Database zichtbaar in de dynamische zoek gedeelte die te zien is vanaf cel CT8.
Als ik in cel CT9 een wedstrijd nummer invoer kan ik daarna met Ctrl/Shift B de functie activeren.

Ik hoop dat ik zo iets duidelijker ben.
 
Verander je filter code
Code:
DataSH.Range("B8").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=DataSH.Range("$CT$8:$CT$9"), CopyToRange:=DataSH.Range("$CW$8:$DC$8"), _
Unique:=False
Of zo
Code:
  With DataSH
    .Range("B8").CurrentRegion.AdvancedFilter 2, .Range("$CT$8:$CT$9"), .Range("$CW$8:$DC$8")
    lstLookup.RowSource = .Range("outdata").Address(external:=True)
  End With
en stel je listbox.columncount in op 7 zodat het overeenkomt met je "outdata" kolommen
 
Er ontbreekt ook nog code in combobox change event
Code:
Private Sub cboHeader_Change()
Dim DataSH As Worksheet
Set DataSH = Blad1
  If Me.cboHeader.Value = "All_Columns" Then
    DataSH.Range("CT8") = ""
  Else
    Me.txtAllColumn = ""
    DataSH.Range("CT8") = cboHeader.Value
    DataSH.Range("CT9") = ""
  End If
End Sub
 
Advies

- de vormgeving is de laatste van je zorgen.
- gebruik altijd cel A1 van een werkblad
- gebruik geen rowsource
- gebruik inspringing bij het schrijven van code
 
Dank je voor jouw advies snb. Rowsource moet je toch gebruiken in de programmering?
 
Ik bedoel, met Rowsource moet ik toch een bepaald blad aanroepen in de userfrom?
 
Waarom geen rowsource? Ik ben VBA voor smarties nog aan het bestuderen, maar wat ik zo zie is dat jullie , in plaats van rowsource, sheet en range gebruiken?
 
Nee wij gebruiken de eigenschap .List van een combobox of een listbox.
 
met dank aan snb...
Met rowsource leg je een direkte link naar een gebied in een werkblad.
Met een Combobox kan dat tot het vastlopen van Excel leiden, omdat een wijziging in de combobox niet adekwaat verwerkt wordt in gelkijktijde aanpassing van het werkblad.
Bovendien kan iedere wijziging van het werkblad allerlei ongewensete gebeurtenissen oproepen, die kunnen interfereren met de combobox en de verwerking van de code kunnen vertragen.
Ter voorkoming van vertraging van code dient schrijven/lezen naar een werkblad zoveel mogleijk beperkt te worden.

De beste methode om een Combobox/listbox te vullen is de methode 'List'.
Je kunt direkt een 1-dimensionele of 2-dimensionele array aan een combobox/listbox toeschrijven.
De lijst behoudt automatisch de rijen en kolommen van de toegeschreven array.
Als je geen array hebt kun je het best eerst alle op te nemen waarden in een array zetten en in 1 keer aan de combobox toewijzen.
Dit is de meest efficiënte en snelste manier om een lijst te vullen


@snb Bij het lezen van de tekst op je site constateerde ik diversen type foutjes.
 
Laatst bewerkt:
@Jackn

Bedankt voor de suggestie.
Aangepast.
 
Ik ga VBA voor smarties eerst maar eens goed bestuderen. Dank je wel snb hiervoor.
Jack Nouws ook dank voor de uitleg. Ik ga met mijn warhoofd proberen het te begrijpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan