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

positie userform

Status
Niet open voor verdere reacties.

SUVERMO

Gebruiker
Lid geworden
22 dec 2019
Berichten
481
hallo,

Bij klik op E2:E100 verschijnt UserForm1 in het midden van het scherm,
is het mogelijk om UserForm1 te laten verschijnen zoals afgebeeld bij klik op E15
namelijk: bovenkant UserForm1 gelijk met onderkant active cel
linkerkant UserForm1 gelijk met linkerkant active cel
 

Bijlagen

Test deze eens in de Userform_Initialize:
Code:
With Me
    .StartUpPosition = 0
    .Top = Application.Top + ActiveCell.Offset(1).Top + ActiveCell.Height + .Height
    .Left = Application.Left + ActiveCell.Offset(, 1).Left
End With
 
Laatst bewerkt:
beste edmoor

dit komt al aardig in de richting, de userform verschijnt echter 6 rijen te laag, zie plaatje
 

Bijlagen

  • positie userform1.jpg
    positie userform1.jpg
    244,5 KB · Weergaven: 27
Bij mij niet.
Dan zal je met de Offset moeten spelenof wat extra rekenen met de ActiveCell.Height.
 
Laatst bewerkt:
een groter probleem, als ik cel E50 selecteer dan loopt mijn laptop vast
het enige wat ik dan nog kan doen is de laptop afsluiten

heeft u een idee waarom?
 

Bijlagen

Als je gaat klopt de hoogte positie niet meer.
 
Geen idee.
Nog niet naar gekeken.
Wellicht dat iemand anders hier dat al eens gedaan heeft.
 
Zo ?, zelf maar even spelen met de Top en Left positie.
Code:
With UserForm1
    .StartUpPosition = 0
    .Top = ActiveCell.Top * ActiveWindow.Zoom / 100 + (0.5 * .Height) - (ActiveWindow.ScrollRow - 1) * ActiveCell.Height * ActiveWindow.Zoom / 100
    .Left = ActiveCell.Left * ActiveWindow.Zoom / 100 + ActiveCell.Width * ActiveWindow.Zoom / 100 + 15 * ActiveWindow.Zoom / 100
    .Show
 End With

aanvulling: Je kunt ook gaan voor de oplossing van Pearson, die heb ik ook al gebruikt.
 
Laatst bewerkt:
Code:
 With Me
        .StartUpPosition = 0
        .Top = ActiveCell.Top + ActiveCell.Height + .Height
        .Left = ActiveCell.Offset(0, 1).Left
    End With
 
Jean-Paul,

De opmerking van Suvermo in #5 gaat hier ook op.
 
De code van post #11 is niet helemaal correct, .Show weggehaald. ( stukje stond bij mij in sheet_SelectionChange)
Code:
With Me
    .StartUpPosition = 0
    .Top = ActiveCell.Top * ActiveWindow.Zoom / 100 + (0.5 * .Height) - (ActiveWindow.ScrollRow - 1) * ActiveCell.Height * ActiveWindow.Zoom / 100
    .Left = ActiveCell.Left * ActiveWindow.Zoom / 100 + ActiveCell.Width * ActiveWindow.Zoom / 100 + 15 * ActiveWindow.Zoom / 100    
 End With
 
Omdat ik toch al bezig weg hier een voorbeeldbestand. (met ook de code van Pearson)
Het userform aangepast.(Listbox2 verwijderd en het Listbox1_Click event aangepast).
Lijkt erop dat beide codes naar behoren werken.








aangepast)
 

Bijlagen

met deze code verschijnt de userform juist onder de actieve cel

behalve als de formulebalk is opengeklapt of als het lintbalk met de opdrachten is weergegeven.

hoe kan dit opgelost worden



Code:
Private Sub UserForm_Initialize()
UserForm1.StartUpPosition = 0
UserForm1.Top = Application.Top
UserForm1.Top = Application.Top + ((ActiveCell.Row - ActiveWindow.VisibleRange.Row - 4) * 15) + UserForm1.Height
UserForm1.Left = Application.Left + ActiveCell.Offset(, 1).Left
UserForm1.Width = 200
ListBox1.List = [Nummer].Value
ListBox2.List = [Nummerkleur].Value
End Sub
 
Heb je #14 en 15# wel gelezen en getest.
Volgens mij werkt de code van epearson altijd goed.
In beide codes staat het midden van het Userform uitgelijnd op de activecell.( ongeveer)
Maar dat kun je altijd aanpassen.
 
bedankt
nog niet geprobeerd

ik probeer het vanavond of morgenvroeg
 
bedankt AD1957 om mij dit nog eens te laten proberen

Dat werkte inderdaad prima, ik was er mee gestopt omdat ik voor een andere gedeelte een userform gebruik om uitleg te geven.
Met een extra listbox lukt het hier ook.

ik heb listbox1 gekopieert, deze noemde dan listbox2 en deze wat aangepast.
in het naamvak staat voor ListBox1, ListBox1 en voor ListBox2, ListBox2
in de formulebalk staat voor zowel ListBox1 als ListBox2, =INSLUITEN("Forms.ListBox.1";"")
kan dat problemen geven?
hoe komt dat?
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan