ComboBox geordend inlezen

Status
Niet open voor verdere reacties.

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
720
Goedenavond allen,

Zit met een vraagje.

Zoek gegevens met een Combobox. Tot dusver geen probleem.
Haal meerdere gegevens binnen b.v. Achternaam, Voornaam en Tussenvoegsel.
Werkt allemaal perfect, alleen gegevens zijn gescheiden middels een komma.

Zoals hieronder worden de 3 gegevens gescheiden door een komma en een spatie.
Zou het graag zo willen hebben dat alle komma's onder elkaar komen te staan in het overzicht.

Code:
  Rij = 9
  ZoekUserForm.ZoekNaamCB.Clear
  While Worksheets("DBase").Cells(Rij, "A") <> ""
    If Worksheets("DBase").Range(Rij & ":" & Rij).EntireRow.Hidden = False Then
      With ZoekUserForm.ZoekNaamCB
        lnr = 50 - Len(Join(Application.Index(Sheets("DBase").Cells(Rij, 1).Resize(, 3).Value, 1, 0), ""))
        [B].AddItem Worksheets("DBase").Cells(Rij, "A") & "," & Space(1) & Worksheets("DBase").Cells(Rij, "B") & "," & Space(1) & Worksheets("DBase").Cells(Rij, "C")[/B]
      End With
    End If
    Rij = Rij + 1
  Wend

Iemand een idee hierover?
Heb een voorbeeldje bijgesloten.

Already many thanks

Vr. Gr.

Dutch
 

Bijlagen

  • ComboboxInlezenGeordend #1.xls
    43 KB · Weergaven: 54
Zo doen we dat:
 

Bijlagen

  • __zie_zo snb.xls
    28,5 KB · Weergaven: 57
Hoi snb,

Mooie oplossing maar (nog) niet volmaakt.

Zit met 2 dingen.

1e Eenhelelangenaamnu komt niet geheel tevoorschijn.

Dus vraag me af of er een mogelijkheid is om de breedte van ieder kolom te veranderen (in het UserForm ZoeknaamCB)
Namen met een korte afmeting krijgen ook zo,n breed kolom.


2e Hoe kan je een kolom inlezen? bv. Abrahams Jan van de 012.

Zou bv. de Voornaam willen weten dus Jan.
Aangezien er geen komma's achter iedere kolom staat heb je geen gegeven om in te lezen?


Vr. Gr.

Dutch
 

Bijlagen

  • ComboboxInlezenGeordend #2.xls
    30 KB · Weergaven: 50
Kijk eens bij de eigenschappen van de combobox: eigenschap columnwidth.

Code:
Private sub ZoekNaamCB_change()
   msgbox ZoekNaamCB.column(1)
end sub
 
Laatst bewerkt:
Hoi sns,

met kolom bedoelde ik niet de ZoeknaamCB (combobox) breedte, maar

je hebt bv. 4 gegevens zijnde Naam, Voornaam, Tussenvoegsel en een nummer

deze vier gegevens staan naast elkaar in het overzicht van de combobox.

iedere gegeven heeft een bepaalde lengte in de Combobox. Als de naam langer is wordt hij afgebroken.. dat bedoelde ik

Dus is er een mogelijkheid om iedere gegeven zijn eigen lengte te geven in de combobox
 
Bedoel je zoiets?
 

Bijlagen

  • ComboboxInlezenGeordend #3.xls
    33,5 KB · Weergaven: 54
Hoi VenA,

Dit had ik al (op een andere manier) vb 1

De bedoeling is om iedere gegeven dus Naam, Voornaam, Tussenvooegsel en nummer onder elkaar te krijgen

dus de komma's zouden onder elkaar komen dan.

Vraag was met welke mogelijkheid krijg je deze optie (Tab)?
 
Waarom kijk je niet bij columnwidth ?
 
Niet dat ik er veel van begrijp maar bv zo krijg je de hele handel onder elkaar.
 

Bijlagen

  • ComboboxInlezenGeordend #4.xls
    40,5 KB · Weergaven: 49
Hoi VenA,

Nee niet op die manier.

Kijk maar in het voorbeeldje. Deze is van snb.

Dus Voornamen onder elkaar, Achternamen onder elkaar Tussenvoegsels onder elkaar en nummers onder elkaar enz. enz

Gescheiden met een komma en de mogelijkheid dat je de grootte van bv. de Achternamen kan vergroten en bv de grootte van de nummers kan verkleinen...
 

Bijlagen

  • ComboboxInlezenGeordend #3.xls
    36,5 KB · Weergaven: 54
Wat je met die die komma wilt blijft voor mij een raadsel. Om de juiste breedte van de kolom te berekenen ben je afhankelijk van het gekozen lettertype. Ik heb het even in de constante 'pt' met de waarde 7 gezet. Hier kan je dus een beetje mee spelen om het door jouw gewenste resultaat te bereiken.

Voor een dynamisch formulier
Code:
Private Sub UserForm_activate()
Const pt = 7
Dim ar(3) As Long, j As Long
  With ZoekNaamCB
    .List = Blad1.Cells(9, 1).CurrentRegion.Resize(, 4).Value
    For j = 0 To .ListCount - 1
      .List(j, 1) = "," & .List(j, 1)
      .List(j, 2) = "," & .List(j, 2)
      .List(j, 3) = "," & .List(j, 3)
      ar(0) = Application.Max(ar(0), Len(.List(j, 0)) * pt)
      ar(1) = Application.Max(ar(1), Len(.List(j, 1)) * pt)
      ar(2) = Application.Max(ar(2), Len(.List(j, 2)) * pt)
      ar(3) = Application.Max(ar(3), Len(.List(j, 3)) * pt)
    Next j
    Me.Width = Application.Sum(ar) + 50
    .Width = Application.Sum(ar) + 10
    .ColumnWidths = ar(0) & "," & ar(1) & "," & ar(2) & "," & ar(3)
  End With
End Sub
 
Er is een bepaalde lettertype die constant is in de breedte.
Welke weet ik niet meer.
We hebben in een ver verleden ooit al eens zoiets behandeld, maar het is en blijft geknutsel.
Misschien kun je het met de zoekfunctie vinden; ik begin er niet meer aan.
 
Hoi VenA,

Het idee van de komma is dat je een naam ertussen uit kan halen en dan is een komma achter een naam makkelijk.

Heb je idee geprobeerd, maar geeft foutmelding.

Hij kan de ColumnWitds niet instellen.


Voor HSV & AlphaMax,

Denk dat het met lettertype ook niet werkt daar spaties hele andere breedte hebben.
Opzet was dat je iets met een soort Tab kon doen zodat iedere gegeven op dezelfde plaats begint.

Gr.

Dutch
 
Laatst bewerkt:
Die eigenschap bestaat ook niet ;)

De methode in Userform Initialize bestaat alleen dankzij het feit dat gebruik gemaakt wordt van een 'fixed font' letterype.
 

Bijlagen

  • __ordelijk snb.xls
    38,5 KB · Weergaven: 46
Laatst bewerkt:
Zoals in eerdere voorbeeldjes te zien is, is de komma nergens voor nodig.

Probeer het zo eens
Code:
.ColumnWidths = ar(0) & "[COLOR="#FF0000"];[/COLOR]" & ar(1) & "[COLOR="#FF0000"];[/COLOR]" & ar(2) & "[COLOR="#FF0000"];[/COLOR]" & ar(3)

Edit zoals snb al aangegeven heeft.
 
Laatst bewerkt:
Goedemorgen VenA,

Was er net ook achter gekomen thanks, werkt goed met ;

Maar doemt weer een volgend probleem op,

Als je dan een naam uitkiest geeft ie alleen de 1e naam weer.

zie vbtje

En probeer gelijk ook, om bv. alleen Voornaam eruit te halen
 

Bijlagen

  • ComboboxInlezenGeordend #5.xls
    44 KB · Weergaven: 49
@Dutch

Doe mij een lol en vertel nou eens even waar je mee bezig bent en wat je uiteindelijk wil bereiken.
Het grote 'plaatje' ontbreekt nu volledig.

Verdiep je ook eens in de verschillende eigenschappen van een Listbox.

Ik heb nu een wat fraaier (want schreefloos) 'fixed font' gebruikt.
 

Bijlagen

  • __ordelijk snb.xls
    36,5 KB · Weergaven: 43
hoi snb,

ok speciaal voor jouw
weet dat je altijd mooie korte codes hebt,

zoals ik in het begin aangaf

Met deze ComboBox haal ik gegevens binnen
Deze gegevens bestaan uit (laten we het simpel houden) Achternaam, Voornaam, Tussenvoegsel en een nummer
Deze 4 gegevens staan op een Regel
Als je meerdere namen in je DBase hebt staan deze allemaal onder elkaar als je de ComboBox opentrekt
Om het geheel wat overzichtelijker te maken, bedacht ik om de Achternamen, Voornamen, Tussenvoegsels en nummers onder elkaar te krijgen, daar iedere naam weer anders is.

Deze ziet er goed uit en zal ff verder kijken

Ben een klein stapje verder, begrijp dat de indeling zich automatisch (door formule), zich aanpast aan de lengte van de namen.
Alhoewel de totale wijdte van de combobox handhaaft op zich mooi, maar is niet wat ik zoek

Zou graag willen dat bv. de Achternaam 25 karakters heeft, Voornaam 20 karakters, Tussenvoegsel 15 en nummers 3
Zelf aan te passen uiteraard.
Wat die komma´s betreft, heb je een houvast om bv. de Voornaam er tussenuit te halen
 
Laatst bewerkt:
Dan wordt het wellicht zo:
 

Bijlagen

  • __ordelijk snb.xls
    37 KB · Weergaven: 45
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan