Opmaak combobox

Status
Niet open voor verdere reacties.

arnoo7

Gebruiker
Lid geworden
24 nov 2014
Berichten
79
Ik ben VBA aan het leren maar ik loop enorm te rommelen met de opmaak in een combobox.

Ik ben een formulier aan het maken. Daarop wil ik een aantal keuzelijsten waar de gebruiker uit een aantal opties kan kiezen. De opties wil ik echter beperkt houden omdat een aantal optie in 95% van de gevallen gebruikt worden. Maar voor paar keer wil ik wel dat de gebruiker ook zelf een waarde in kan geven. Daarom een combobox ipv een listbox, die default op de meest gebruikte waarde staat. De listbox en de combobox lijken echter anders te reageren.

Bekende problemen zijn altijd data en percentages. De datum ben ik nu uit (hoewel ik nog niet helemaal snap waarom "dd-mm-yyyy" nog steeds de amerikaanse notatie geeft en "dd-mmm-yyyy" niet)

Bij procenten blijf ik echter rommelen en ik kom er niet uit. Ik loop er tegenaan dat:

1. Of in de combobox de waarde wordt gegeven: 0,2 ipv 20% (dit gaat bij de listbox goed)
2. Of de waarde wordt weggeschreven als een string in de excel (dit gaat bij de listbox goed mits ik maar op de waarde klik, dus de listindex selecteert niet automatisch wat hij bij de datum wel doet)
3. Of de waarde wel wordt weggeschreven als een getal in de cel maar als ik er in de macro mee ga rekenen dan strand het. Ik heb geprobeerd om de variabele te declareren in verschillende datatype maar dat bood nog geen oplossing.

Het bestand is werkgerelateerd, dus die kan ik niet posten daarom een testbestandje gemaakt om e.e.a. uit te proberen. Nu met deze laatste versie kan ik er wel om heen zeilen door in dit voorbeeld de waarde van de variabele "test" eerst weg te schrijven naar een cel. Dan deze weer uit de cel te halen om er dan mee te gaan rekenen, dat lukt wel. Maar dan loop ik te trucen en dat is erg omslachtig en ik begrijp liever wat ik fout doe.

Heeft iemand suggesties?

Vriendelijke groet,
Arno
 

Bijlagen

Laatst bewerkt:
Om de combobox te vullen
Code:
cboProcent.List = Array("10%", "15%", "25%")

Voor de waarde in jouw sheet. Met de celeigenschappen ingesteld op %
Code:
[B12] = Replace(Me.cboProcent.Value, "%", "") / 100
 
Hallo VenA

Dit werkt prima. Hij struikelt blijkbaar over het % teken. Ook toegepast in het andere bestand inmiddels! Ik begrijp nog niet helemaal het verschil in werking tussen de listbox en de combobox, maar hiermee heb ik een goed werkbare oplossing.

Even gecheckt. Het werkt ook met additem, maar meet veel keuzemogelijkheden is het vullen van de array en stuk efficienter.

Dank je!

Groet Arno
 
Code:
Private Sub UserForm_Initialize()
lboDatum.List = Cells(1).CurrentRegion.Columns(1).Value
lboDatum.ListIndex = 0


lboProcent.List = [index(text(0,05*(row(2:4))& "%"),0)]
lboProcent.ListIndex = 0


cboDatum.List = Cells(1).CurrentRegion.Columns(1).Value
cboProcent.List = [index(text(0,05*(row(2:4))& "%"),0)]
End Sub
Code:
Private Sub cmdTest_Click()
Range("A11:B12").ClearContents
 If lboDatum.ListIndex > -1 Then [A11] = CDate(lboDatum.List(lboDatum.ListIndex, 0))
  [A12] = CDate(cboDatum)
  [B11] = lboProcent.List(lboProcent.ListIndex, 0)
  [B12] = cboProcent.Value
 
  MsgBox cboProcent.Value & " van 1000 = " & 1000 * Replace(cboProcent, "%", "") / 100
Unload Me
End Sub
 
HSV en snb,

Mijn oprechte excuses voor de late reactie. Ik heb gemist dat er nog een aantal reacties waren geplaatst.

Ik heb nog even lopen testen met de methodes zoals door HSV voorgesteld. Werkt prima. De index begreep ik niet helemaal. Maar met wat extra voorbeelden van de site van snb nu wel. Weer wat geleerd, dank daarvoor!

Met vriendelijke groet Arno
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan