Data in listbox corrigeren mbv textboxen en combobox.

Status
Niet open voor verdere reacties.

MirM

Gebruiker
Lid geworden
7 sep 2014
Berichten
7
Ik heb een userform met o.a. een listbox en textboxen/combobox. De text- en combobox worden gebruikt om de data in de listbox te corrigeren.

De data kan per regel overgenomen worden in de textboxen en combobox. Dan kan de gebruiker correcties maken. Met de knop Toepassen wordt de gecorrigeerde data in de listbox geplaatst.

De gebruiker kan echter ook meerdere regels in de listbox selecteren. Dan dient alleen de gekozen waarde in de combobox overgebracht te worden (tussen C en D) naar alle geselecteerde rijen.

In beide gevallen zou ik graag na het Toepassen de eerstvolgende lege regel geselecteerd willen hebben, de nodige data van die regel(s) in de (textboxen en) combobox en de combobox instellen op listindex 0.

Ter verduidelijking een 'stappenplan' met afbeeldingen:
Mogelijkheid 1: Eén rij uit de listbox selecteren
a. Kies knop Userform tonen
b. Selecteer eerste regel van listbox
c. Wijzig eventuele de twee (witte) textboxes en kies een item uit de combobox
d. Kies knop Toepassen. Dan zou dit het resultaat moeten zijn:
VbTxtNaarLst.jpg

Mogelijkheid 2: Meerdere rijen uit de listbox selecteren
a. Kies knop Userform tonen
b. Selecteer eerste, tweede en zesde regel van listbox
c. Kies een item uit de combobox
d. Kies knop Toepassen. Dan zou dit het resultaat moeten zijn:
VbTxtNaarLst2.jpg

Het merendeel van mijn knoeiwerk heb er maar weer uit gehaald, hopende dat jullie me kunnen leiden naar een mooie oplossing.

Alvast bedankt voor jullie moeite.
 

Bijlagen

  • ForumVbTxtNaarLst.xlsm
    16,2 KB · Weergaven: 84
MirM,

De fout zit in de manier waarop je de gegevens terug zet in de array.
Op het moment dat je op de knop Toepassen drukt ga je namelijk niet alleen de kolom 3 aanpassen met de CboBox.value
maar je gaat nog drie kolommen aanpassen, zoals txtBedrag in kolom 2 en txtMemo in kolom 4.
Kies maar eens voor rij 3 en 6, Kies voor "drie" in CboBox en klik op Toepassen. In regel 3 wordt dan de kolom 2 gewijzigd van C3
naar C6 en kolom 4 van D3 naar D6.
Een wijziging ik lstBox veroorzaakt een automatische doorloop van lstBox_change wat een verandering veroorzaakt in CboBox_change
wat automatisch de CboBox uitschakelt.
Ik stel voor dat je alleen dat laat wijzigen wat je ook gewijzigd wil hebben en dat je voorkomt dat CboBox automatisch wordt uitgeschakeld.

Veel Succes.
 
Bedankt dat je de moeite hebt genomen om je te verdiepen in mijn beschrijving en natuurlijk voor je reactie!

Helaas kom ik hier niet veel verder mee, want de kolommen waar witte tekstboxen van zijn en de kolom met de combobox moeten kunnen worden gewijzigd.

Bovendien reageert VBA niet zoals jij beschrijft. Wanneer ik het volgende uitvoer:
Kies maar eens voor rij 3 en 6, Kies voor "drie" in CboBox en klik op Toepassen.
dan is bij mij het resultaat dat alleen in de kolom van de combobox "drie" is geplaatst op rij 6. Overige kolommen blijven gelijk aan oorspronkelijke inhoud.
Dus dit gedeelte werkt naar mijn mening. Ik moet het alleen nog uitbreiden met Selected(i) zodat ook rij 3 gevuld wordt met "drie", dat gaat denk ik wel lukken.

Waar ik nog steeds mee zit is dat ik graag de eerstvolgende lege rij automatisch geselecteerd wil hebben en de "invoerregel" met die data gevuld krijgen.
 
Hallo MirM,

Een wijziging ik lstBox veroorzaakt een automatische doorloop van lstBox_change wat een verandering veroorzaakt in CboBox_change
Je zou kunnen werken met een boolean die afhankeliijk van de waarde de events wel of niet uitvoert.

Heb geen tijd om het uit te werken, maar misschien kun je wat met deze tip.

Gr. Mirjam
 
Met veel puzzelwerk en je tip ben ik eruit geraakt! :) Dank je wel.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan