Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

userform e zoom

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

userform e zoom

Postdi deniel69 » 03/01/15 22:09

Buon giorno a tutti ,ed eccomi qui con un altro quesito...

Con l'istruzione UserForm1.Zoom = 120 aumento la form del 20%
ma solo il suo interno e non le dimensioni della form vera e propria.
ovvero:
UserForm1.Height
UserForm1.Width
Ora come faccio a mantenere le proporzioni ed aumentare o DIMINUIRE tutto ma proprio
tutto ,vale a dire dimensioni Height and Wedth della form e il suo interno?
Ovvero textbox ,label, ulsanti etc etc ......

Un grazie anticipato a chi mi prenderà in considerazione......
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Sponsor
 

Re: userform e zoom

Postdi Statix » 04/01/15 00:01

Ciao
Non so se riesco ad aiutarti,
hai provato con
Codice: Seleziona tutto
 ActiveWindow.Zoom = 77
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: userform e zoom

Postdi alfrimpa » 04/01/15 00:05

Ciao Deniel69

Non sono a casa e quindi non ho il pc a disposizione quindi ritieni queste mie considerazioni come un iniziale spunto di riflessione.

Io comincerei a provare con un ciclo For Each attraverso il quale ciclare tutti i controlli della userform.

Per ogni controllo memorizzerei in una variabile numerica larghezza ed altezza; poi a queste grandezze applicherei la percentuale di modifica e poi reimposterei la nuova larghezza/altezza.

Alfredo
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 842
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: userform e zoom

Postdi ricky53 » 04/01/15 02:56

Ciao,
prova con questo esempio di codice:
Codice: Seleziona tutto
Sub Esegui()
    mZoom = 1.2 ' <<======  Qui inserisci il valore di ingrandimento/diminuzione della Userform e dei vari controlli in essa contenuti
    [A1] = UserForm1.Zoom
    [A2] = UserForm1.Height
    [A3] = UserForm1.Width
    UserForm1.Zoom = UserForm1.Zoom * mZoom
    UserForm1.Height = UserForm1.Height * mZoom
    UserForm1.Width = UserForm1.Width * mZoom
   
    [B1] = UserForm1.Zoom
    [B2] = UserForm1.Height
    [B3] = UserForm1.Width
   
    UserForm1.Show
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: userform e zoom

Postdi deniel69 » 04/01/15 15:55

Un super grazie a ricky53.... perfetto.

Per i posteri ,ovvero chi vorrà usare il codice in futuro,su excel 2007 (su altre versioni non sò) l'ultima istruzione
UserForm1.Show, se la proprietà ShowModal della userform è impostata su true da errore....

Poco male basta impostare la ShowModal su False oppure eliminare UserForm1.Show e tutto funziona comunque.....

Grazie ancora a ricky53
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Re: userform e zoom

Postdi deniel69 » 04/01/15 16:31

Se servisse a qualcuno posto anche questa soluzione funzionante con l'aggiunta di un controllo
in caso di inserimento nullo........ (farina del mio sacco solo l'aggiunta della ImputBox).

Private Sub CommandButton1_Click()
Dim ctl As Control
Dim dbl As Double
Dim AIPBox As String

AIPBox = InputBox("Inserire % di zoom anteporre segno - se si vuole ridurre", "Zoom su UserForm")
If AIPBox = vbNullString Then 'Exit Sub
MsgBox "Nessuna percentuale inserita" & strName
Exit Sub
End If


With Me
dbl = CDbl(AIPBox) / 100
'dbl = CDbl(.TextBox1.Text) / 100 '<=== Se vuoi inserire da text box
.Height = .Height + (.Height * dbl)
.Width = .Width + (.Width * dbl)
For Each ctl In .Controls
ctl.Top = ctl.Top + (ctl.Top * dbl)
ctl.Left = ctl.Left + (ctl.Left * dbl)
ctl.Height = ctl.Height + (ctl.Height * dbl)
ctl.Width = ctl.Width + (ctl.Width * dbl)
Next
End With
Set ctl = Nothing
End Sub
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Re: userform e zoom

Postdi ricky53 » 05/01/15 03:14

Ciao,
strano che l'istruzione "Userform1.Show" se la proprietà "ShowModal" è impostato a "True" vada in errore.

Non ho il 2007 ed ho provato con il 2010 e NON ottengo errori.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: userform e zoom

Postdi deniel69 » 05/01/15 16:44

Mi da errore perché quando lancio la macro la userform è già aperta e quindi se non metto in showmodal=false da errore.....

Ma per il resto è perfetta............ grazie ancora.....
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Re: userform e zoom

Postdi ricky53 » 05/01/15 16:55

Ciao,
allora riporta le istruzioni prima di "aprire" la tua USerForm
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: userform e zoom

Postdi Zer0Kelvin » 06/01/15 03:40

deniel69 ha scritto:Mi da errore perché quando lancio la macro la userform è già aperta e quindi se non metto in showmodal=false da errore.....

Ma per il resto è perfetta............ grazie ancora.....

Ciao.
Il codice è un pò prolisso ( quando si utilizza Forr Each è inutile impostare a Nothing la variabile di controllo, e si possono risparmiare diverse addizioni e moltiplicazioni) e mi sono permesso di dipulirlo un pò.
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
Dim ctl As Control
Dim Zoom As Single
Dim AIPBox As String
    AIPBox = InputBox("Inserire % di zoom anteporre segno - se si vuole ridurre", "Zoom su UserForm")
    If AIPBox = vbNullString Then
        MsgBox "Nessuna percentuale inserita"
    Else
        With Me
            Zoom = (100 + AIPBox) / 100
            .Height = .Height * Zoom
            .Width = .Width * Zoom
            For Each ctl In .Controls
                With ctl
                    .Top = .Top * Zoom
                    .Left = .Left * Zoom
                    .Height = .Height * Zoom
                    .Width = .Width * Zoom
                End With
            Next
        End With
    End If
End Sub
Per quanto riguarda l'errore ( a proposito, QUALE errore?) dici che si verifica se la userform è gia visualizzata, ma se è visualizzata non hai motivo di richiamare UserForm1.Show.
Dove è che viene richiamata?

PS: per rendere la macro affidabile, occorre inserire dei controlli sia sul valore inserito nella inputbox (deve essere un numero) che sul quello assunto dalla variabile Zoom (4>=Zoom>=0,1).
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 305
Iscritto il: 08/04/12 11:23

Re: userform e zoom

Postdi Anthony47 » 06/01/15 18:50

Scusate, e' tutto il ciclo For Each ctl In .Controls /Next ctl che e' ridondante; basta infatti usare la proprieta' zoom della form; cioe', partendo dal codice di Z0K (vedi sopra):
Codice: Seleziona tutto
    With Me
        myZoom = (100 + AIPBox) / 100
        .Width = .Width * myZoom
        .Height = .Height * myZoom
        .Zoom = myZoom * 100
    End With
End If
End Sub
(mi sono permesso di modificate il nome della variabile "Zoom", perche' credo sia confusivo usare nomi che corrispondono a parole chiave del vba)
Rimane comunque inutile il With Me /End With (in un modulo di classe tutti i riferimenti sono per definizione all' oggetto in discussione, salvo che non sia espressamente dichiarato altro).

Mi rimane il dubbio sul perche' una userform debba essere ingrandita a occhio, e non dimensionata in funzione di parametri dell' ambiente, ad esempio la dimensione della finestra di lavoro.

Sempre valide le osservazioni di Z0°K sulla "robustezza" della macro (vedi suo messaggio sopra).

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "userform e zoom":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti