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

Bepaalde woorden uit combobox wegschrijven.

Status
Niet open voor verdere reacties.

kabebanaan

Terugkerende gebruiker
Lid geworden
29 jun 2001
Berichten
1.204
Hallo,

Wie kan me helpen om bepaalde woorden uit een combobox weg te schrijven naar het werkblad. Niet alle woorden, maar een aantal woorden dienen te worden weggeschreven.

Ik heb een voorbeeldbestand met mijn vraag toegevoegd.
 

Bijlagen

Laatst bewerkt:
Hallo,

In je voorbeeldbestand wordt verwezen naar een range die de computer niet kan vinden. Hierdoor is het moeilijk in te schatten hoe de opmaak van de combobox gegevens zijn.

Toch ben ik zo vrij geweest om de code (gedeeltelijk) aan te passen en uit te breiden om de aanvullende gegevens in de C-kolom te zetten.

Ik hoop dat hiermee je vraag beantwoord is.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Komt in de richting.

Krijg echter nu in kolom C een aantal karakters achter de teskt die ik wil hebben. (mu komt erachter te staan. (zie m'n bijlage)
 

Bijlagen

Ik zie al wat ik fout deed. Volgens mij moet het nu in orde zijn.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Is helaas nog steeds hetzelfde.

Krijg echter nu in kolom C een aantal karakters achter de teskt die ik wil hebben. (mu komt erachter te staan. (zie m'n bijlage)
 
Hmm, merkwaardig.

Ik zag echter dat je de oude versie gebruikte. Ik heb de nieuwe versie gebruikt, de wijzigingen aangebracht en vervolgens getest en bij mij klopt het dus ik neem aan bij jou ook.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
De goede versie werkt.
Thnx !!:thumb:

Kun je me eenvoudige uitleg geven hoe dit werkt?
Voor mij zijn de meeste codes abcadabra .... ik weet alleen in gedachten hoe ik 't hebben wil.
Maar wil dit wel 's onder de knie hebben.
Dus als je stap voor stap is wilt toelichten hoe één en ander werkt?

While Mid(ComboBox1.Value, Tekst, 1) <> "(" And Tekst <= Len(ComboBox1.Value)
Tekst = Tekst + 1
Wend
Range("C" & X).Offset(1, 0) = Trim(Mid(ComboBox1.Value, Pos, Tekst - Pos))
 
Laatst bewerkt:
Kun je me eenvoudige uitleg geven hoe dit werkt?
Voor mij zijn de meeste codes abcadabra .... ik weet alleen in gedachten hoe ik 't hebben wil.
Maar wil dit wel 's onder de knie hebben.
Dus als je stap voor stap is wilt toelichten hoe één en ander werkt?

While Mid(ComboBox1.Value, Tekst, 1) <> "(" And Tekst <= Len(ComboBox1.Value)
Tekst = Tekst + 1
Wend
Range("C" & X).Offset(1, 0) = Trim(Mid(ComboBox1.Value, Pos, Tekst - Pos))


While....Wend is een gedeelte van een programma dat meer dan 1 keer wordt doorlopen.
Dit noemen we een lus (in het Engels een "loop").

Mid(ComboBox1.Value, Tekst, 1) <> "("

Het commando Mid is identiek aan DEEL. Dus DEEL( tekst , start , aantal karakters )
Tekst = waarde van de combobox1.value
start = De positie vanwaar gezocht moet worden. (deze waarde wordt dus steeds met 1 verhoogd zodat de computer naar de volgende letter gaat).
aantal karakters = 1

De computer kijkt wat de gekozen waarde is in Combobox1. De computer zoekt naar (.
Dus elke letter in de tekst van combobox1 wordt gecontroleerd of dat een ( is.
Om te voorkomen dat er oneindig gezocht wordt naar ( als er bijvoorbeeld in de tekst geen ( staat, is het raadzaam een limiet aan de waarde van Tekst te zetten. Vandaar de toevoeging:

And Tekst <= Len(ComboBox1.Value)

Len = lengte ( spaties worden meegeteld !)
De computer gaat dus net zolang zoeken totdat de ( is gevonden OF als de waarde van Tekst groter is dan de lengte van de waarde van de combobox.

Range("C" & X).Offset(1, 0) = Trim(Mid(ComboBox1.Value, Pos, Tekst - Pos))

De volgende regel in de C kolom wordt gevuld met een deel van de waarde van de combobox.
In stukjes:

- Range("C" & X).Offset(1,0) ==> volgende regel (1 regel omlaag, 0 kolommen naar rechts)
- Trim ==> eventuele spaties aan het begin en einde worden verwijderd.

Ik hoop dat ik een klein beetje licht in de duisternis heb gebracht.
Als er vragen zijn, dan hoor ik het wel.

Met vriendelijke groet,

Roncancio
 
While....Wend is een gedeelte van een programma dat meer dan 1 keer wordt doorlopen.
Dit noemen we een lus (in het Engels een "loop").

Het commando Mid is identiek aan DEEL. Dus DEEL( tekst , start , aantal karakters )
Tekst = waarde van de combobox1.value
start = De positie vanwaar gezocht moet worden. (deze waarde wordt dus steeds met 1 verhoogd zodat de computer naar de volgende letter gaat).
aantal karakters = 1

De computer kijkt wat de gekozen waarde is in Combobox1. De computer zoekt naar (.
Dus elke letter in de tekst van combobox1 wordt gecontroleerd of dat een ( is.
Om te voorkomen dat er oneindig gezocht wordt naar ( als er bijvoorbeeld in de tekst geen ( staat, is het raadzaam een limiet aan de waarde van Tekst te zetten. Vandaar de toevoeging:



Len = lengte ( spaties worden meegeteld !)
De computer gaat dus net zolang zoeken totdat de ( is gevonden OF als de waarde van Tekst groter is dan de lengte van de waarde van de combobox.



De volgende regel in de C kolom wordt gevuld met een deel van de waarde van de combobox.
In stukjes:

- Range("C" & X).Offset(1,0) ==> volgende regel (1 regel omlaag, 0 kolommen naar rechts)
- Trim ==> eventuele spaties aan het begin en einde worden verwijderd.

Ik hoop dat ik een klein beetje licht in de duisternis heb gebracht.
Als er vragen zijn, dan hoor ik het wel.

Met vriendelijke groet,

Roncancio

Bekijk ook eens de InStr functie in VBA ter vervanging van de While ... Wend. Je hoeft iets dat standaard in het programma zit niet opnieuw zelf programmeren...

Wigi
 
Heldere uitleg ....... alvast bedankt hiervoor.

Alleen begrijp ik Pos en -Pos niet in de regel:

Range("C" & X).Offset(1, 0) = Trim(Mid(ComboBox1.Value, Pos, Tekst - Pos))

Misschien wanneer ik dat door heb, dat ik dan een volgende keer zelf te tekstboxen kan opsplitsen naar mijn wensen.
 
Heldere uitleg ....... alvast bedankt hiervoor.

Alleen begrijp ik Pos en -Pos niet in de regel:

Range("C" & X).Offset(1, 0) = Trim(Mid(ComboBox1.Value, Pos, Tekst - Pos))

Misschien wanneer ik dat door heb, dat ik dan een volgende keer zelf te tekstboxen kan opsplitsen naar mijn wensen.

Pos heb je gebruikt voor het begin van de tekst.

Bijv.:

Combobox1.value = 42 blauwe map (muziek)
Pos = 3 (spatie na de 42)
Tekst = pos (dus ook 3)

Via de lus wordt de positie van de ( gezocht. Als je de resultaten van de lus weergeeft dan zou het er zo uit gaan zien:
(de rode tekst is dus wat er in de C-kolom zou komen te staan).

Range("C" & X).Offset(1, 0) = blauwe map (muziek)
Range("C" & X).Offset(1, 0) = blauwe map (muziek)
Range("C" & X).Offset(1, 0) = blauwe map (muziek)

etc

Aan het eind van de lus:
Range("C" & X).Offset(1, 0) = blauwe map (muziek)
 
Roncancio ....Duidelijk nu, en nogmaals bedankt voor de uitleg.

Wigi .... InStr functie zal ik ook eens gaan kijken of ik er iets mee kan .... eerst dit even verwerken. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan