Producten toevoegen op een werkblad middels getrapte keuzelijsten

Status
Niet open voor verdere reacties.
Heb mijn fout ontdekt. Ik had de code verkeerd hersteld na een aanpassing. Dom dom dom.

Code was:

Code:
Private Sub UserForm_Initialize()
    Set Geg = Sheets("Materiaallijst")
    arr = Geg.Columns(1).CurrentRegion.Offset(1)
    
    With CreateObject("scripting.dictionary")
        .CompareMode = vbTextCompare
        
        For i = 1 To UBound(arr)
            .Item(arr(i, 1)) = arr(i, 1) -1
        Next
        
        Combo_Zoek.List = .keys
    End With
    
    Set Geg = Nothing
End Sub

De -1 stond op de verkeerde regel...... Moest zijn:

Code:
Private Sub UserForm_Initialize()
    Set Geg = Sheets("Materiaallijst")
    arr = Geg.Columns(1).CurrentRegion.Offset(1)
    
    With CreateObject("scripting.dictionary")
        .CompareMode = vbTextCompare
        
        For i = 1 To UBound(arr) - 1
            .Item(arr(i, 1)) = arr(i, 1)
        Next
        
        Combo_Zoek.List = .keys
    End With
    
    Set Geg = Nothing
End Sub

Dat stukje is weer werkzaam. Rest enkel de rest. Echter schoot mij daar ook iets van te binnen en wat ik al eerder aangaf. Jij gaf aan dat de voorwaarde was dat alles was ingevuld. Dus ik kan kolom D de naam Opties geven en zo ook de Combo de naam Combo_Opties. Hier kan ik dan invullen als er geen voorwaarden zijn: Geen en als er wel voorwaarden zijn... dan gewoon de voorwaarden wit, creme, inbouw, opbouw, rond, vierkant etc. Maar toch zou het wel handig zijn als ik indien opties leeg is, ik dan alles te zien krijg.
 
Neem me het niet kwalijk, maar wat betekent .currentregion?
Wat is het einde van currentregion als kolom D helemaal leeg is.
 
Laatst bewerkt:
Het enige wat ik kan zeggen hierover is : Huidige regio.

En als deze leeg is tja dan is deze oneindig. Lijkt mij logisch......... toch ?

Deze ken ik ook nog niet, maar wat ik wel al heb gemerkt is dat ik volgens mij door deze kolom ook volledig te vullen, op de goede weg ben. Wat je al eerder schreef.. voorwaarde is dat de cellen allemaal gevuld zijn..... Ik heb dan ook de kolom Opties genoemd en kijk hoe ver ik daar mee kom. Kans dat er weer een keuzelijst bij moet komen is groot, maar ik ga eerst hier wel mee spelen. Je hoort het wel van mij, tenzij jij van mening ben dat ik op de verkeerde weg zit, dan hoor ik het graag van jou.

Verder het sorteren. Waar jij sorteert ben ik volgens mij ook uit. Echter als ik een logisch ritme aanhoud dan kom krijg ik toch een foutmelding.

Code:
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , , , .[D2], , xlGuess   'Producten per kolom A - D alfabetisch sorteren

D2 krijg ik dus niet gesorteerd. Waar ga ik hier verkeerd. Ik volg de komma's. Eerst zijn het er 2, dan worden het er 3 en dan lijkt mij de daarop volgende 4 komma's moet worden. Maar VBA zegt toch FOUTJE!!!

En inderdaad.. dit zijn 1 van de sleutelwoorden uit jouw code waar ik nog geen kennis mee had gemaakt. Wel ga ik ook hiermee aan de slag. Wat ik wel weer merk is dat dit weer een hele andere manier is van een getrapte keuzelijst maken in VBA in vergelijking als hoe ik deze tot nu toe opmaakte. Of ik moet mij sterk vergissen.
 
Laatst bewerkt:
En als deze leeg is tja dan is deze oneindig. Lijkt mij logisch......... toch ?

Nee, je hebt het helaas nog niet door.
Range("a1").currentregion gaat niet verder komen dan het einde van kolom C in jouw voorbeeld Maarten.
De rest van je gegevens doen niet meer mee door je lege kolom.



Verder het sorteren. Waar jij sorteert ben ik volgens mij ook uit. Echter als ik een logisch ritme aanhoud dan kom krijg ik toch een foutmelding.

Code:
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , , , .[D2], , xlGuess   'Producten per kolom A - D alfabetisch sorteren

D2 krijg ik dus niet gesorteerd. Waar ga ik hier verkeerd. Ik volg de komma's. Eerst zijn het er 2, dan worden het er 3 en dan lijkt mij de daarop volgende 4 komma's moet worden. Maar VBA zegt toch FOUTJE!!!

Als je nu eens de Help van Excel raadpleegt over de sorteerfunctie (range.sort) dan hoef ik hier niet veel uit te leggen.
 
Beste HSV.
CurrentRegion zit inderdaad anders in elkaar dan ik aanvankelijk dacht. Dit is dus ook waarom je die voorwaarde stelde dat alles gevuld moet zijn. Dat is mij dan duidelijk.

Dus als ik kolom D volledig vul dan mag dit geen probleem opleveren. Cellen die dan "leeg" zouden moeten zijn, kan ik invullen met de waarde Geen. Ben ik al aan het doen.

Wat ik al vermoede is dat er nog 1 kolom extra gaat bijkomen. Dit betekent dus dat ik er weer een combobox bij moet plaatsen in het bestand en dus dat kolom A tot en met E gevuld moet gaan worden om zoekopdrachten te verfijnen.

Verder te gaan met .sort. Ik had al eerder gezocht maar vond telkens niet wat ik moest hebben. Nu jij aangaf range.sort (waar ik niet op zocht) heb ik inderdaad de opzet gevonden. Kijkende hiernaar is het maximale bereik naar wat ik begreep 3 keys. Ik snap nu dus ook meteen waar =.keys vandaan komt in de code. Nu vraag ik mij alleen af hoe ik dan de kolommen D en E er ook in kan betrekken. Moet ik hiervoor dan toch de code extra invoeren met daarin de 2 overige kolommen of kan dit toch in die ene coderegel middels een simpele truck met bijvoorbeeld A:E of zoiets? Ik heb nu al verschillende dingen geprobeerd maar het lukt mij niet. Die komma's waar ik het over had.. ik snap niet hoe ik zo "dom" kon zijn, immers dit gebruik je ook in msgbox als je bepaalde optionele waarden niet invult.
 
1). Volgens mij hoeven nu alleen maar de eerste drie kolommen gevuld te zijn om een juiste match te verkrijgen voor combo 4.
Als D1 alleen maar is ingevuld werkt currentregion weer prima.

2). De sorteersleutels 'keys' heeft niets van doen met de .keys van de dictionary.
Dit moet je dus niet met elkaar gaan verwarren.

Stuur het voorbeeldbestand eens met hoever je bent.
Het liefst zonder de fouten van de vorige.
 
Is goed, maar om verwarring en extra werk te voorkomen, immers anders blijven we bezig. Schep ik voor mijzelf ook even duidelijkheid in de definitieve opzet. Wat ik nu merk is dat ik het zelf met categoriseren niet helemaal eens ben. In theorie klopt het voor mijn gevoel wel, maar dan ga ik aan de gang en merk ik toch dat de logica qua zoeken er niet is. Ik ben of was dus chaotisch bezig en dat schept alleen maar verwarring voor mij, maar in deze ook voor jou. Dat ben ik nu even aan het rechttrekken. Daarna zal ik het bestaand bestand kopieren en het kopie volledig uitkleden zodat enkel de materiaallijst en userforms overblijven waar het om gaat.

Wat ik wel prettig zou vinden en dat vraag ik keer op keer weer en telkens vergeet ik het. Dit forum kent enkel uploads tot 100kB. Het bestand is te groot. Waar kan ik het bestand plaatsen zodat ik enkel de link hier hoef te plaatsen?
 
Laatst bewerkt:
Beste HSV,

Bij deze het voorbeeldbestand.


Er zijn kolommen bij gekomen en totaal heb ik nu 6 comboboxen. Hier laat ik het bij. Voor kolommen waar ik geen keuzes heb, ga ik gewoon de waarde: Geen invullen. Dit omdat de currentregio anders niet doorloopt. Ik heb de code in het userform aangepast, maar ik vraag jou wel deze te controleren en te corrigeren indien je een foutje ziet.

Ook is het dus de bedoeling dat kolom A, B, C, D, E en F per categorie alfabetisch worden gesorteerd. Ik ben benieuwd naar hoe die coderegel dan gaat worden. Ik heb geprobeerd om hier een extra coderegel in te voeren wat een kopie was van die van jou en daarin de waarde A2, B2 en C2 veranderd in D2 en E2. Dit werkte ook niet helemaal.

Wat ik ook gemerkt heb is dat zodra ik iets invoer de 1e regel verplaatst wordt naar onderaan. Gezien dat de celwaarde begint met "Z" zou dat kloppen, maar dit mag natuurlijk niet. Het kan zijn dat dit te maken heeft dat dit door lege cellen komt, maar dat hoor ik dan graag van jou.

Bekijk bijlage Masala09_Combo.xlsm
 
En toen viel het stil...... Ik heb in ieder geval niet stil gezeten, maar blijf er niet uitkomen. Hoop alsnog op een oplossing.
 
Ik heb er nog niet naar gekeken, zodra ik daar tijd voor vind zal ik het niet nalaten.
 
Het ziet er prima uit Maarten.

Er zijn maar drie sorteersleutels, dus daar kan ik verder niets aan doen.
Voor het eenvoudigen van je zoekfunctie zal je filters kunnen plaatsen op de eerste rij (simpel maar doeltreffend).
Iets invoeren en sorteren gaat prima; alles gaat zo als het moet en de eerste rij komt hier niet onderaan te staan.
 
Ik ben er zelf al achter gekomen dat zodra er ergens een opening staat in de sorteerkolommen dat het dan mis gaat. In hoeverre moet ik nog even uittesten. Wellicht kan het ook te maken het ook te maken hebben doordat je telkens aan het sleutelen bent en het bestand gewoon even opnieuw moet starten. Op die wijze ben ik er ook al achter gekomen dat het dan wel weer werkt. Ergens heb ik denk ik dan een verkeerde bewerking gedaan en iets niet goed doorgevoerd ofzo iets. In ieder geval na het opnieuw opstarten zijn dit soort "problemen" ineens opgelost.

Voor wat betreft het sorteren. Ik had zelf ook al iets van dat er een max van 3 is. Echter het lijkt mij toch dat dit verder kan door bijvoorbeeld een Sorteersleutel kolom D:E. In ieder geval is het dan niet deze code die nu in gebruik is. Range.sort methode heb ik nooit gebruikt. Dus ik weet hier echt niets van. Wel heb ik ergens gelezen, stond alleen geen voorbeeld bij, dat Excel 2007 waar ik ook mee werk, zelfs 7 sorteersleutels kent, maar ik vermoed dat hier Excel mee wordt bedoeld en niet VBA.

Dan toch mijn eigenwijze vraag: Kan deze code dan niet 2 keer worden uitgevoerd door dan ergens anders te beginnen met sorteren en zodat er dus weer 3 sorteersleutels ingevoerd kunnen worden? Ik bedoel als de eerste 3 kolommen zijn gesorteerd, dan lijkt het mij dat je middels dezelfde code de rest moet kunnen sorteren en dat bijvoorbeeld kolom D weer als richtlijn wordt gebruikt. Ik weet het niet hoor, ik zit ook alleen maar te brainstormen.

Die filters op de eerste rij vind ik niets en dan ben ik ook nog eens afhankelijk van blad Materiaallijst. Dat is juist waar ik zo min mogelijk in wil rommelen. Hier staan te veel gegevens in om daar een risico mee te lopen. Het echte bestand bestaat inmiddels al uit 1049 produkten.

Als jij hier afhaakt dan dank ik je in ieder geval voor je hulp en hoop ik dat een ander wel een oplossing ziet. Bijvoorbeeld Snb. Die trekt ook hele trukendozen open.

In ieder geval voor nu kom ik dus feitelijk even stil te vallen.

Nogmaals bedankt. Als ik toch iets vind dan zal ik het zeker delen.
 
Laatst bewerkt:
Je moet eens wat vaker de Vba-Help gebruiken van Excel, en eens een macrootje opnemen met de recorder.
Je kan elke kolom laten sorteren in één code, maar als je bij de vierde sorteersleutel bent, gaat de derde kolom al weer door elkaar.
Veel succes met het uitbreiden.
 
Ik denk dat je mijn aanpassing van het bericht niet hebt gelezen. Immers jij kwam vrij snel na mij terug.

Dat wat jij schrijft begrijp ik. Daar om zit ik te denken of het dan geen mogelijkheid is dat als kolom A tot en met C is gesorteerd er dan geen tweede coderegel ingevoerd kan worden die dan weer kijkt naar kolom C en zo de kolommen D, E en F sorteert. Dus dat je feitelijk een andere currentregion opgeeft.

Voor de rest de macro recorder. Ja ik werk er wel eens mee, maar niet veel. Ook voor hier geld dat ik ook niet met een macrorecorder nooit heb gesorteerd. Ik zou nog niet eens weten hoe ik dat dan voor elkaar moet krijgen. Alle bewerkingen doe je dan handmatig, maar hoe sorteer ik handmatig....... Cellen knippen en plakken geeft niet het gewenste resultaat.

De VBA help gebruik ik ook wel eens, maar je moet dan wel weten waar je naar wilt zoeken. Maar ik geef niet op. Ik ben en blijf eigenwijs in het zoeken naar oplossingen al dan niet met de hulp van anderen. Mij is altijd geleerd, voor ieder probleem bestaat een oplossing alleen de ene oplossing is simpel en de andere is weer moeilijk en soms moet je een omweg nemen om iets te bereiken. Als de uitkomst dan maar gelijk is. ;)

In ieder geval nogmaals bedankt voor de genomen en getoonde moeite.
 
Ik begrijp wat je wilt, maar dan moet je een lege kolom invoegen, anders gaan de anderen weer mee.
Je currentregion houdt op bij kolom C, dus je moet dan het gehele bereik nemen.
Maar ik ben bang dat je gegevens niet meer bij elkaar horen.
Dus abc gesorteerd, de gegevens van efghij blijven staan; fgh sorteren?, kolom abc blijven staan.
 
Ja dat klinkt ook weer logisch waar ik niet aan heb gedacht. Het leek mij dan feitelijk zo simpel, maar dat gaat dus, in ieder geval met deze code niet op.

Dan ga ik in ieder geval niet daarmee doorsleutelen en zoeken naar hopelijk een ander soortgelijk iets maar dan over meer. Als dat er echt niet is dan is het pech gehad en accepteren dat het niet anders is. Het geheel wordt wel bij elkaar gezet in de lijsten alleen dan valt de alfa volgorde vanaf combobox 4 weg en het invoeren van een product zal dan ook gesorteerd gaan tot en met kolom C.
 
Schiet mij even iets te binnen.... Ik kan volgens mij wel zorgen dat de lijsten voor in de combobox zelf alfa gesorteerd worden. Dan zou ik Combobox 4 tot en met 6 op een dergelijke manier moeten instellen..... Ik heb volgens mij wel eens zoiets gezien. Dan heb ik in ieder geval dat stukje wel opgevangen. Dan is het enkel nog het wegschrijven zoals op het laatst beschreven in bericht #37 wat nog overblijft.....
 
Is het alleen maar tekst wat je wil sorteren?
Of is het alfanumeriek.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan