Combobox werkt niet goed op ander tabblad

Status
Niet open voor verdere reacties.

Sansje

Gebruiker
Lid geworden
21 dec 2014
Berichten
50
Hoi hoi. Ik ben in excel 2007 bezig om een userform over meer dan 1 tabblad te kunnen gebruiken. Dit werkt. Echter waar ik even tegen aan loop is de list van de combobox.

Code:
ComboBox1.List = Sheets("Debiteuren").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).row).Value

In het tabblad debiteuren krijg ik de gehele lijst, 183 stuks, te zien. Ga ik naar een ander tabblad dan krijg ik er hooguit 23 stuks te zien.

De bovenstaande code staat in de initialize van het userform.

Hoe krijg ik het voor elkaar om ook op andere tabbladen de combobox in het userform volledig te vullen. Is het iets met declareren als combobox?
 
Even een kleine aanvulling. Volgens mij heeft het er alleen totaal niets mee te maken, maar je weet het nooit als je het niet vraagt.
Onderstaande wordt gebruikt om de textboxen te vullen. Het zijn de resultaten bij het zoeken naar de gegevens van de klant.

Code:
Private Sub Combobox1_Click()    
    It = WorksheetFunction.Match(ComboBox1.Text, Sheets("Debiteuren").Columns(1), 0)
    kolnr = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    For i = 2 To 10
        Me("TextBox" & i) = Sheets("Debiteuren").Cells(It, kolnr(i))
    Next i
    
End Sub
 
Laatst bewerkt:
Er vallen zoveel verbetersuggesties te geven dat je beste het (voorbeeld) bestand hier kunt plaatsen.
 
Hoi snb. Dank je voor je reactie. Ik snap wat je bedoelt, maar wat mij bevreemd is dat het wel op het bewust tabblad goed functioneert en niet op een ander tabblad. Jij geeft aan dat er verbeteropties zijn, waar ik mij best in kan vinden en eerlijk gezegd (al loop ik hier nog niet zo lang rond) jij vind altijd wel verbeteropties :rolleyes: alleen ik zit er niet zo in als een pro zoals jij hihi. Ik wil die codes graag in die zin een beetje begrijpelijk houden. Jij goochelt en ik sta met respect versteld van jouw kunnen en kennis.

Ik zal eens kijken of ik jouw verzoek kan realiseren al zie ik zelf niet echt het nut hiervan in. Immers het zit toch in die code en ik mag toch aannemen dat deze code dan toch ook volledig overal moet werken. Tenminste zo dacht ik totdat ik dit probleempje zag. Mijn gedachtegang ligt denk ik dan verkeerd. Vandaar ook mijn vraag waardoor het dan kan.
 
Sandra wij moeten eens nodig een woordje wisselen met elkaar. Mijn vermoeden is bevestigd en het had je gesierd om mij om toestemming te vragen.

Sorry mensen, maar dit moest ik even doen. Rest zal achter gesloten deuren plaatsvinden.
 
Laatst bewerkt:
Sandra, om verder jou toch te helpen met je prive zaken het volgende.

Verander jouw code eens in:

Code:
  ComboBox1.RowSource = "Debiteuren!A2:A" & Sheets("Debiteuren").Columns(1).SpecialCells(2).Count

Wellicht dat dit jouw probleem verhelpt. Het zit hem in ieder geval niet in het declareren.
 
Laatst bewerkt:
Ik weet even niet hoe te reageren Maarten. Ik voel mij betrapt, maar dank je als dat de oplossing is, bedankt ik ga het uit proberen.
 
Code werk nu wel. Ik snap alleen niet wat ik fout deed. Waarom jouw code wel werkt en die van mij niet? Ik verwijs naar het juiste blad en op het blad werkt mijn code weer wel.

Btw hoop niet dat je kwaad bent.
 
Fijn dat het werkt Sandra. De reden moet ik jouw helaas verschuldigd blijven. Wellicht dat iemand anders dit wel kan verduidelijken.

Boos ben ik niet en ik ga niet hier op dit forum het hoe, wat en waarom bespreken. Daar is dit forum absoluut niet voor bedoeld en bovendien hoeft niet iedereen alles te weten. Wij spreken elkaar morgen. Zie verder mijn whatsapp aan jou. Doe dat wat daarin staat nu maar even. Ik zie je morgen graag weer op de werkvloer.
 
Dank je en je hebt gelijk. Weltrusten en tot morgen.
Hoop het antwoord graag wel te weten te komen dan.
 
Code:
ComboBox1.List = Sheets("Debiteuren").Range("A2:A" & Sheets("Debiteuren").Cells(Rows.Count, 1).End(xlUp).row).Value

Zo zal hij wel overal werken.
 
Code:
ComboBox1.List = Sheets("Debiteuren").Range("A2:A" & Sheets("Debiteuren").Cells(Rows.Count, 1).End(xlUp).row).Value

Zo zal hij wel overal werken.

Hoi Rudi. Dank je. Het probleem is al opgelost, maar als ik naar jouw code kijk dan zit daar maar een klein verschil in. Maakt dat kleine verschil dan mijn probleem? Ik verwijs in beide toch naar hetzelfde blad? Het was voor mij een dubbele en onnodige verwijzing lijkt mij zo. Of dit zo is dat weet ik niet.

Dit was de mijne

Code:
ComboBox1.List = Sheets("Debiteuren").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).row).Value

Maarten kwam met:

Code:
ComboBox1.RowSource = "Debiteuren!A2:A" & Sheets("Debiteuren").Columns(1).SpecialCells(2).Count

Dus welke is dan beter?

Groetjes Sandra
 
Laatst bewerkt:
Warme Bakkertje heeft helemaal gelijk.
In jouw code wordt in die regel naar twee verschillende sheets verwezen als het aktieve werkblad niet het werkblad 'debiteuren' is.
Je kunt het ook zo schrijven:

Code:
ComboBox1.List = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).row).Value

of
Code:
ComboBox1.List = cells(2,1).resize(Cells(Rows.Count, 1).End(xlUp).row-1).Value
 
Word ik toch even nieuwsgierig. Die code die ik heb gebruikt doet het ook. Wat is daar dan "verkeerd"aan. Minder mogelijkheden of eventuele instabiliteit?? :p
 
Uit de vraag is niet duidelijk wat er in de combobox moet komen te staan:
- of alle gevulde cellen in kolom A van werkblad debiteuren
- of alle gevulde cellen in kolom A van het op dat moment aktieve werkblad

@masala

Jouw code is een antwoord voor de eerste optie, met de kanttekening dat als vóór de laatste cel in kolom A een of meer cellen leeg zijn, de lijst niet volledig is.
 
Beste SNB.

Je bedoelt dat met mijn code dan uit de kolom alle rijen wel worden weergeven van boven naar beneden, maar als bijvoorbeeld van rij 45 kolom A leeg is, rij 46 tot en met maximale rij niet meer in de lijst wordt weergegeven?

Ik heb het verder nog niet uitgeprobeerd hoor. Deze code heb ik ooit eens gebruikt en het werkte wel. Echter er staan in dat bestandje geen lege cellen in kolom A. Misschien dat het daarom mij nooit is opgemerkt. :cool:

Maar om een lang verhaal kort te houden. De wijze van Rudi, was inderdaad dat stukje wat waar ik even niet op kwam en wat ik eerlijk gezegd ook niet direct zag. In beide gedeelten van de code moet inderdaad in haar eerste code de sheet 2 maal genoemd worden. Bij haar stond dat 1 maal.

Dus Sandra buiten het feit dat ik nu hier op antwoord op mijn eigen vraag wacht. Ga ik wel met Rudi en SNB mee.
 
Laatst bewerkt:
Hm. Oke. Maar de code van maarten werkt wel. Dus zou eigenlijk niet weten wat er dan verkeerd aan zou zijn. En bovendien maarten wil ik jou niet voor je hoofd stoten. Dus weet eigenlijk niet wat ik nu het beste kan aanhouden.
 
Maakt mij niet uit Sandra. Ik zou gaan voor hun optie. Zij zijn en zeker SNB meer bedreven als ik. Als SNB dit al aangeeft dan zou ik toch voor Rudi gaan of als je dat makkelijker vind, voor SNB.

Mij voor mijn hoofd stoten doe je niet. Het is jouw bestand en jouw code. JIJ BEPAALT en niet een ander. Wij helpen alleen maar door adviezen te geven op jouw vraag en meer niet.
 
Snb voor de duidelijkheid. Ik wil alle cellen in kolom A vanaf rij 2 naar onder van blad debiteuren ook in de combobox van een userform kunnen zien zodra ik deze op een ander tabblad dan debiteuren open. Dit formulier wordt qua indeling afhankelijk van het actieve blad. Dus niet op ieder blad moeten alle objecten en dus ook de te laden gegevens in het userform zichtbaar zijn.
Anders moet ik 7 keer een zelfde userform maken met andere objecten en de te tonen gegevens. Wel geldt de combobox voor alle indelingen.

Snap je?

Groet Sandra
 
Laatst bewerkt:
Dank je maarten. Dan zal ik op jouw advies meegaan met het advies van snb. Dank je voor de moeite.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan