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

Userform: positie op scherm en dropdown van een combobox

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.233
Ik wil dat bij een klik op een bepaalde cel een userform met een ComboBox wordt getoond (reden: op die cel staat een validatie maar de items uit de lijst zijn veel te klein omleesbaar te zijn). Vervolgens moet de keuze uit de ComboBox in die cel worden ingevuld.
Dat is geen probleem.

Maar wat ik nu zou willen:
-de userform zou naast de actieve cel moeten komen en niet in het midden van het werkblad (frm_test.left = activecell.left werkt niet; bij die activecell.left zou ook nog de breedte van de cel moeten opgeteld worden natuurlijk)
-als ik de dropdown methode gebruik voor die ComboBox worden de items van die combox NAAST de userform getoond (dropdown is wel niet persé noodzakelijk)
-is er een eenvoudige manier om in de ComboBox 1 or meerdere beginletters te typen (cf ComboBox in Access) en dan ineens op de juiste item in de ComboBox te komen?
 
voor de userform op de juiste plaats al activecell.offset(,1).left geprobeerd? Kom je een eind in de buurt gok ik.
 
voor de userform op de juiste plaats al activecell.offset(,1).left geprobeerd? Kom je een eind in de buurt gok ik.

De form blijft gewoon in het midden staan. frm_test en activecell.left geven beide de waarde 0
 
voor de userform op de juiste plaats al activecell.offset(,1).left geprobeerd? Kom je een eind in de buurt gok ik.

Heb al uitgevist dat de StartupPosition van de form op manual moet staan
Maar
Code:
frm_catégorie.Left = Target.Left + Target.Width
frm_cat?gorie.Top = Target.Top
reageert nu wel, maar positie is nog niet juist.
Denk dat de left van een range van een ander startpunt vertrekt dan de left van een form
 
Om je userform op een bepaalde plek te openen

Code:
Private Sub UserForm_Activate()
    Me.StartUpPosition = 0
    Me.Top = Application.Top + 96
    Me.Left = Application.Left + Application.Width - Me.Width - 88
End Sub
 
moeten we weer zelf een voorbeeld bestand maken?
 
Om je userform op een bepaalde plek te openen

Code:
Private Sub UserForm_Activate()
    Me.StartUpPosition = 0
    Me.Top = Application.Top + 96
    Me.Left = Application.Left + Application.Width - Me.Width - 88
End Sub

Bedankt! Zijn die 96 en 88 de hoogte en breedte van de kolom- en rijkoppen? Maar veronderstel dat ik die waarden moet gebruiken om de positie tov de target te bepalen?
 
Bedankt! Zijn die 96 en 88 de hoogte en breedte van de kolom- en rijkoppen? Maar veronderstel dat ik die waarden moet gebruiken om de positie tov de target te bepalen?

Klopt daar zal je even mee moeten stoeien om de juist plek te bepalen
 
reneemettrie? dé reneemettrie? maw degene die ik lang geleden heb ontmoet bij een presentatie annex groepssollicitatie voor een nog op te richten onderwijsinstelling en die ik nadien nog een professioneel pre-voorstel heb gedaan?
Hoef je niet per se op te antwoorden, hoor.

Over naar je probleem dus: velen hebben dat al vóór jou geprobeerd en ongetwijfeld zullen nog velen volgen. Maar… het gaat niet tenzij met extreem gefoefel. De reden hiervoor is dat een userform een ander coördinatenstelsel gebruikt dan werkbladcellen. Dat betekent dat je vooraf eea definitief zal moeten vastleggen: Excel bij voorkeur gemaximaliseerd, lint zichtbaar of niet, kolombreedte (A in je voorbeeld), alle rijhoogtes liefst identiek… Pas daarna kan je aan het spelen gaan met de waarden die je van loek010 hebt gekregen. De 88 en de 96 kunnen bij hem/haar perfect kloppen zonder dat ze dat bij jou of bij mij doen. Zelf zou ik het zo doen: de waarden van Me.Left aanpassen tot het formulier netjes naast kolom A begint, vervolgens hetzelfde met Me.Top tot het gelijk valt met de bovenkant van rij 1 (noteer die voor later). Je hebt dan ook nog een derde waarde nodig, namelijk het verschil tussen de bovenkant van rij 1 en die van rij 2. Ik zou die zoeken door bv. opnieuw Me.Top aan te passen tot die gelijk valt met de bovenkant van rij 101. Deel door 100 en je hebt de waarde die je per rij moet toevoegen aan de Me.Top die je de eerste keer had gevonden.

Conclusie: het zal altijd een bricoleeroplossing blijven. Mijn voorkeursuggestie: vergeet dat formulier. Je zit met een lettertype van 24 pt te werken en een zoom van 50%. Dat is een soort nuloperatie. Als je naar 100% gaat en een lettertype van bv. 12 pt wordt de dropdownlijst van je gegevensvalidatie meteen wel leesbaar. Als dat nog te klein aanvoelt kan je naar 8 pt/150% gaan. Kwestie van even uitzoeken dus. Nog even rijhoogtes naar wens aanpassen en klaar.

De derde mogelijkheid sluit aan bij de tweede. Ook daarvoor zal je met lettertype en zoom even aan de slag moeten. Als met name de dropdownlijst in de cellen storend is kan je perfect een combobox op je werkblad zetten en dan wordt effectief van de werkbladcoördinaten gebruik gemaakt. Veel codeerwerk komt daar dan niet aan te pas, dus ik heb voor de aardigheid een voorbeeldje gemaakt.

Succes!
 

Bijlagen

  • Validation.xlsm
    30,1 KB · Weergaven: 73
Enigmasmurf, het was voor iemand die ik gecoached heb in Excel, heb hem nadien niet meer gesproken en hij heeft ook niet gereageerd op het bestand dat ik hem mailde.
Die positie van de userform lukte goed voor de horizontale positie, maar niet voor de verticale: voor ene cel te hoog, voor andere te laag.
Maar tot de zoom-conclusie was ik ook gekomen: lettertype verkleinen en zoom vergroten :) .
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan