none
Vba excel 365 centrare un foglio ridotto in base alla risoluzione dello schermo RRS feed

  • Domanda

  • Salve,

    non sono un programmatore, ho incominciato da un paio di mesi con vba

    Lentamente, anche perchè il tempo mi è nemico, sono riuscito a fare ciò che volevo.

    Il problema:

    Lavoro con tre computer diversi con tre schermi di risoluzione differente. Tutti file sono in onedrive e i pc hanno lo stesso account. Solo per un fattore estetico mi piacerebbe che le schermate vengano visualizzate sempre al centro.

     Una Macro (copiata)  mi da la risoluzione dello schermo in Pixels o Pollici.

    Ho creato una serie di menù, workbooks diversi, tutti con dimensione  larghezza 480 x altezza 400 (Pixels).

    La mia intenzione era di centrare i menù in tutti gli schermi indipendentemente dalla risoluzione, ma questo non avviene.

    Date le dimensioni dello schermo che visualizzo in due celle, esempio:

    - dimensioni schermo 1920 (esempio cella B2) e  1080 (esempio cella B3) Pixels

    - creo una formula in B4   =Somma((B2-480)/2) , il risultato mi trovo tutto spostato troppo a destra

    - in B5 faccio lo stesso con la posizione verticale, risultato troppo in basso.

    Il tutto  applicando questa macro in tutti i workbook.

    With Application

            .WindowState = xlNormal

            .Left = l

            .Top = t

            .Width = 480

            .Height = 400

        End With

    dove l = b4 e t=b5

    Nessun problema con tutto il resto, 

    Dove sbaglio? Spero di essermi spiegato bene. 


    Un grazie anticipato per la risposta e per la pazienza.

    Un salutone  e buon week end

    Corrado

    sabato 19 settembre 2020 13:58

Tutte le risposte

  • Dovresti chiedere sul forum msdn, fino a qui ci possso arrivare

    Es minimizzi excel e poi passi a schemo intero andando a ricoprire tutto lo schermo

    Private Sub CommandButton1_Click()
    Application.WindowState = xlMinimized
    UserForm1.Show vbModeless
    End Sub

    oppure
    https://www.exceltip.com/general-topics-in-vba/determine-the-screen-size-using-vba-in-microsoft-excel.html

    https://www.ozgrid.com/forum/index.php?thread/142634-vba-to-automatically-resize-user-form-depending-on-screen-resolution/


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    • Proposto come risposta GastoneCanali sabato 19 settembre 2020 14:15
    sabato 19 settembre 2020 14:15
  • Ciao,

    intanto grazie per la risposta velocissima.

    Con la userform le soluzioni ci sono ma pensavo che si potesse fare anche con una singola finestra di excel ridotta.

    Ho anche provato adattare le macro trovate nel web ma non ho il risultato voluto. 

    Mi confermi quello che già pensavo, era troppo semplice mettere i pulsanti in un foglio  e ridurre la finestra.

    Ribalto il tutto e creo delle user con i pulsanti, tanto i workbooks che uso sono tutti indipendenti uno dall'altro e non devo modificarli. Posso anche aprirli direttamente senza passare per i menù.

    Tempo e pazienza, prova e riprova! Solo così si acquisisce qualcosa. 

    Grazie di nuovo

    Corrado




    sabato 19 settembre 2020 16:42
  • Ciao Corrado,

    l'errore sta nel utilizzare i pixel come unità di misura. Le proprietà dell'oggetto application che stai usando non sono espresse in pixel ma in "point", dove un point equivale a 1/72 di pollice.

    Ho creato la seguente semplice sub

    Sub ApplicationParameters()
        Range("B1").Value = Application.Height
        Range("B2").Value = Application.Width
        Range("B3").Value = Application.Left
        Range("B4").Value = Application.Top
    End Sub


    Sul mio portatile (ho uno schermo 1920x1080 da 14") ho i seguenti risultati per la finestra di Excel espansa a tutto schermo:

    Height 658,8
    Width 1162,8
    Left -4,4
    Top -5,4

    Non ho idea del perché una finestra a tutto schermo parta da valori negativi, ma i valori da considerare per impostare le dimensioni della finestra e per centrarla nello schermo (nel mio) sono questi.

    Ti consiglio di eseguire la stessa sub per prendere nota prima di tutto delle dimensioni della finestra che vuoi centrare, poi dello schermo intero (espandendo Excel a tutto schermo), e poi di calcolare le coordinate per centrarla.

    Spero ti sia stato di aiuto. Ciao!

    Alessandro

    giovedì 29 ottobre 2020 11:25