Condividi tramite

Userform startup position

Anonimo
2017-02-01T07:13:44+00:00

Salve a tutti,

vorrei sapere se è fattibile condinzionare la posizione di una userform in funzione della colonna.

Mi piacerebbe poter vedere la userform sempre dopo la colonna "H" e quindi anche se dimensiono la stessa o altre precedenti, la userform una volta lanciata parta sempre a sinistra della colonna "I".

So che è possibile selezionare "manual" dalle proprietà della userform ma non so come fargli leggere le coordinate della colonna "I" per esempio farla partire sempre in "I3".

Spero di essere stato chiaro e che si possa fare.

Anticipatamente ringrazio

Saluti

Giuseppe

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

12 risposte

Ordina per: Più utili
  1. Anonimo
    2017-02-01T17:05:09+00:00

    Sì! A me, la UserForm si trova sopra la riga previsto dal tuo codice, ossia la riga attiva.

    Ah, ok, grazie.

    Cominciavo a pensare di avere Excel magici.... ;-)

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-02-01T15:16:49+00:00

    Ciao Fratello.

    Forse (forse) mi è tornata la voglia di Community.... ;-)

    Però non ho capito se ti trovi la UserForm a riga 58.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2017-02-01T08:54:43+00:00

    Questo da inserire nel modulo di codice della UserForm:

    #If Win64 Then

        Private Declare PtrSafe Function GetDC& Lib "user32.dll" (ByVal hwnd&)

        Private Declare PtrSafe Function GetDeviceCaps& Lib "gdi32" (ByVal hDC&, ByVal nIndex&)

    #Else

        Private Declare Function GetDC& Lib "user32.dll" (ByVal hwnd&)

        Private Declare Function GetDeviceCaps& Lib "gdi32" (ByVal hDC&, ByVal nIndex&)

    #End If

    Dim wk As Worksheet

    Private Sub UserForm_Initialize()

        Set wk = ThisWorkbook.Worksheets("Foglio1")

        Call FormAlign(Me, wk.Cells(3, 9))

    End Sub

    Sub FormAlign(MyForm, MyCell As Range)

     Dim x#, y#

     x = GetDeviceCaps(GetDC(0), 88) / 72

     y = GetDeviceCaps(GetDC(0), 90) / 72

     With MyForm

         .StartUpPosition = 0

         .Left = ActiveWindow.PointsToScreenPixelsX(MyCell.Left * x) * 1 / x

         .Top = ActiveWindow.PointsToScreenPixelsY(MyCell.Top * y) * 1 / y

         '.Show

     End With

    Set MyForm = Nothing

    End Sub

    In grassetto la parte da modificare secondo le tue esigenze.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  4. Anonimo
    2017-02-01T10:48:00+00:00

    Questa modifica posiziona la UserForm sulla riga con la cella attiva, quella attiva al salvataggio:

    Private Sub UserForm_Initialize()

        Dim lRiga As Long

        Set wk = ThisWorkbook.Worksheets("Foglio1")

        lRiga = ActiveCell.Row

        Call FormAlign(Me, wk.Cells(lRiga, 9))

    End Sub

    A me, con questo la UserForm si apre dove mi aspetto:

    Private Sub Workbook_Open()

        UserForm1.Show

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-02-01T10:28:03+00:00

    Grazie Mauro,

    sempre presente, come tutti, a risolvere i miei problemi.

    Il codice funziona benissimo ma ho notato 2 problemi all'apertura.

    1°) Se inserisco al workbook open il lancio automatico della userform mi parte sempre in alto a sinistra

    2°) se ho salvato il foglio per esempio alla riga 200 il form che dovrebbe comparire sopra non viene visualizzato.

         Ho pensato che forse sarebbe meglio far visualizzare, se possibile, il form al centro del foglio, qualunque sia la riga, ma a partire dalla colonna 9 come hai fatto tu.

    Spero sia possibile.

    Grazie

    Peppe

    La risposta è stata utile?

    0 commenti Nessun commento