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

Synchroon schuiven listboxen

Status
Niet open voor verdere reacties.

AD1957

Verenigingslid
Lid geworden
27 feb 2016
Berichten
1.990
Beste forumleden,
Ik heb een userform met 2 listboxen.
Is er een VBA code om beide listboxen synchroon te laten schuiven?
 

Bijlagen

  • Knipsel.PNG
    Knipsel.PNG
    72,6 KB · Weergaven: 76
Dat kan je gewoon in de VBA editor doen.
Selecteer de betreffende objecten en zet in de eigenschappen het attribuut Left op de gewenste waarde.
 
Dat gaat met de eigenschap Left niet lukken ben ik bang. Ben zelfs van mening dat het niet kan met de ingebouwde opties in VBA. Misschien API?

Maar als ze gelijktijdig moeten schuiven, kan je ze toch net zo goed allemaal in 1 listbox zetten?
 
Zo zie je maar weer dat een plaatje niet voldoende is.
Plaats gewoon je bestand, of een relevant voorbeeld er van.
 
Je zou een extra kringveld (spinbutton)op je userform kunnen zetten om de 2 listboxen synchroon te laten schuiven.
Code:
Private Sub SpinButton1_Change()
If SpinButton1.Value <= ListBox1.ListCount - 1 Then
    ListBox1.ListIndex = SpinButton1.Value
    ListBox2.ListIndex = SpinButton1.Value
End If
End Sub
(pas de namen aan)
 
Dat is een prima alternatief Philiep :thumb:
 
sjonR: Ik heb eerst alles in 1 listbox gehad, het probleem is dat ik dan alle kolommen alleen links of rechts kan uitlijnen.
voor de leesbaarheid van de tekst is links uitlijnen perfect, maar voor de bedragen ziet dat niet netjes uit.

gast0660: Bedankt voor deze optie, ik ga eens kijken of ik hiermee verder kan.
Is er trouwens nog een optie om dan de schuifbalken in listbox1 en listbox2 te verbergen, deze zijn dan nml. niet meer nodig.
Ik ga hiermee eens aan de slag.

Edmoor: Zelf had ik het idee dat een voorbeeldbestand geen meerwaarde had. Indien gewenst kan ik het alsnog plaatsen.
 
Op advies van Edmoor nu toch een voorbeeldbestand omdat er een aantal problemen zijn.
1. De spinbutton werkt net andersom (naar boven gaat naar beneden en andersom)
2. Als ik de spinbutton gebruik en een cel in kolom 1 van blad 1 heb geselecteerd gaat het mis.
de sheet wordt dan ingevuld (zie listbox-click), dit mag alleen als ik click in listbox1

update:
Ik heb zelf al eens geprobeerd of het met een scrolbarr lukt (tot nog toe geen positief resultaat)
 

Bijlagen

  • map1.xlsb
    35,9 KB · Weergaven: 49
Laatst bewerkt:
zet de eigenschap smallchange van de Spinbutton op -1 ipv 1.

Zet de code van de Listbox1_Click in een Listbox1_DblClick.
 
in bijgaand bestandje een mogelijkheid middels het scroll-event van een frame

de maat etc. moet nog wel wat worden bijgewerkt, maar dit geeft een idee
 

Bijlagen

  • map2.xlsb
    38,5 KB · Weergaven: 50
Sjon en Eric,
Bedankt voor de suggesties, ik ga kijken welke het beste in te passen is.
Probleem blijft echter dat ik dan met 3 schuifbalken zit. Niet zo fraai en als ik per abuis de schuifbalk
van een listbox gebruikt klopt er helemaal niets meer van.
Dan toch maar weer alles in 1 listbox en links uitlijnen. ( bedragen niet netjes onder elkaar)
Of rechts uitlijnen (zoeken in de omschrijving stuk moeilijker leesbaar):confused:
 
Laatst bewerkt:
Niet zo fraai en als ik per abuis de schuifbalk
van een listbox
Als (voorlopige) oplossing ,gebruik een Frame, plak je listbox in het frame en pas je frame zo aan dat het de scrollbars van de listbox bedekken.
 
Yep, nog wel juiste breedtes instellen, maar zie vb-tje
 

Bijlagen

  • Copy of map2-1.xlsb
    34,1 KB · Weergaven: 46
Laatst bewerkt:
Kom heren, dat kan natuurlijk best twee verschillend uitgelijnde kolommen in een listbox :)
 

Bijlagen

  • UserformTweeKolommenVerschillendUitgelijnd.xlsm
    26,7 KB · Weergaven: 62
Laatst bewerkt:
:d niet de initiële vraag, maar wel waar het om te doen was, :thumb:
tbv het format van de prijs, zou ik daar nog wat mee doen:

Code:
 For lCt = LBound(vData, 1) To UBound(vData, 1)
        vData(lCt, 2) = String(lLen - Len(Format(vData(lCt, 2), "#,##0.00")), " ") & Format(vData(lCt, 2), "#,##0.00")
 Next
 
Jan Karel, Eric, Philiep,

Het voorstel van Philiep (listboxen in frames zetten) is een goede oplossing voor het verbergen van de schuifbalken.
De code van Jan Karel (met de FORMAT aanvulling van Eric) is super. Zelf was ik in de veronderstelling, na het afstruinen van Helpmij.nl, dat het verschillend uitlijnen niet mogelijk was.
Ik had verschillende vragen hierover gevonden, maar steeds was het antwoord "dit kan niet" . Een:thumb: voor Jan Karel.

Het vervelende is alleen dat ik de hele code niet echt echt kan volgen:confused:, enige toelichting zou welkom zijn.
Ik vind het nml. belangrijk om te weten hoe iets werkt.
 
Het is eigenlijk simpel:
1. Stel een niet-proportioneel font in zoals Courier
2. bepaal de langste waarde die in kolom 2 moet komen
3. Vul de getallen op met spaties zodat het lijkt alsof ze rechts uitgelijnd zijn (maar dat zijn ze eigenlijk niet :) )
 
Laatst bewerkt:
Het kan ook nog zonder de eerste lus.

Code:
Private Sub UserForm_Initialize()
    Dim vData As Variant
    Dim lCt As Long
    Dim lLen As Long
    With Cells(1).CurrentRegion
     vData = .Value
     lLen = Len(Application.Max(.Columns(2)))
      For lCt = LBound(vData, 1) To UBound(vData, 1)
        vData(lCt, 2) = String(lLen - Len(Format(vData(lCt, 2), "#,##0.00")), " ") & Format(vData(lCt, 2), "#,##0.00")
      Next
    ListBox1.List = vData
   End With
End Sub
 
Hah, maar de MAX functie "lust" natuurlijk wel, maar dan intern :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan