Condividi:        

Modificare dimensioni di più celle per avere un quadrato

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

Modificare dimensioni di più celle per avere un quadrato

Postdi ricky53 » 21/09/22 17:17

Ciao a tutti,
eccomi qui dopo diverso tempo a cercare una soluzione.
Espongo la mia esigenza:
ho più intervalli in dei fogli che vorrei fossero dei quadrati precisi.

Esempio:
A1:E5 ====>> vorrei che fosse delle dimensioni di 100 pixel

H11:J15 ====>> vorrei fosse delle dimensioni di 120 pixel

L21:J33 ====>> vorrei fosse delle dimensioni di 60 pixel

Al momento ho trovato una soluzione che non mi piace:
Ho costruito una tabella di corrispondenza
tra larghezza e dimensioni in pixel
3,00 --- 40
4,82 --- 60
6,64 --- 80
8,45 --- 100
10,27 ---120
17,55 --- 200

La tabella ha molti più valori, quelli riportati sono solo di esempio per far vedere cosa ho utilizzato

Con una macro chiedo l'intervallo e la dimensione dei quadrati in pixel e poi con delle elaborazioni trovo le misura da assegnare all'altezza ed alla larghezza dell'intervallo indicato.

Per l'altezza è facile: basta dividere per 2 il valore dei pixel ed ottengo l'altezza della cella
Per la larghezza cerco nella tabella il valore della larghezza che corrisponde al pixel

Vorrei semplificare le operazioni con un algoritmo migliore del mio.
Grazie a tutti
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Sponsor
 

Re: Modificare dimensioni di più celle per avere un quadrato

Postdi Anthony47 » 22/09/22 00:19

Ho cercato piu' volte di capire di piu' su perche' excel imposta le larghezze in un modo e le altezze in un altro, ma sempre senza quagliare i concetti.

Io in genere per impostare una larghezza in pixel uso questo approccio:
Codice: Seleziona tutto
Dim HW As Integer

HW = 100                                  'Dimensione in pixel
Columns(1).ColumnWidth = HW / 5
Columns(1).ColumnWidth = HW / Columns(1).Width * Columns(1).ColumnWidth
Columns(1).ColumnWidth = HW / Columns(1).Width * Columns(1).ColumnWidth
Columns(1).ColumnWidth = HW / Columns(1).Width * Columns(1).ColumnWidth

In pratica, imposto la larghezza a un qualcosa approssimativo, poi vario l'impostazione in funzione del rapporto ColumnWidth/Width; facendolo 3 volte questa impostazione il risultato e' quasi sempre preciso (potrebbe non esserlo per dimensioni piccole, dell'ordine dei 10 px; se pensi di trovarti in questa situazione allora abbonda pure ripetendo una quarta volta)

Per l'altezza basta usare
Codice: Seleziona tutto
Rows(1).RowHeight = HW


Io pero' non ho capito se le dimensioni che dai sono per la singola cella o per l'iinsieme delle celle; comunque il suggerimento e' di lavorare sulla prima cella, poi copiare la sua ColumnWidth sulle altre colonne e impostare la RowHeight sulle altre righe

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Modificare dimensioni di più celle per avere un quadrato

Postdi ricky53 » 22/09/22 01:37

Ciao,
grazie per la tempestiva risposta.
Funziona ma mi mette il valore DOPPIO in pixel, questo perchè excel non vuole il valore espresso in pixel ma in altezza/larghezza.

Questo lo avevo già verificato nelle varie prove che ho fatto e quindi ho messo 50 invece che 100 nella tua macro e ... TUTTO a POSTO.

Selezionando la cella e posizionando il mouse
sulla riga, la parte bassa della cella, e tendendo premuto il tasto sinistro ottengo: Altezza: 100,00 (200 pixel)
sulla colonna, la parte a destra della cella, e tendendo premuto il tasto sinistro ottengo: Larghezza: 17,55 (200 pixel)

A me servono valori da un minimo di 100 ad un massimo di 400 Pixel


Però non mi è chiaro perchè occorre fare quei tre passaggi. Chissà cosa gli fanno alle celle di excel quelle istruzioni in VBA:)

Grazie ancora
Ciao da Riccardo
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Modificare dimensioni di più celle per avere un quadrato

Postdi Anthony47 » 22/09/22 09:19

Funziona ma mi mette il valore DOPPIO in pixel
Probabilmente hai uno schermo in 4k

ColumnWidth si imposta in Caratteri visualizzabili, ma excel aggiunge un tot di pixel alla larghezza per la spaziatura dai bordi.
Ripetere piu' volte l'istruzione Columns(1).ColumnWidth = etc etc serve a "diluire" l'impatto della spaziatura.

Un'altro metodo, matematicamente piu' corretto, e' infatti calcolare l'impatto di un singolo carattere e poi usarlo per calcolare la larghezza da impostare; tipo:
Codice: Seleziona tutto
Sub hSet()
Dim TW As Integer, W5 As Integer, W6 As Integer, tCW As Double
'
'
TW = 200                            'Target Width pixel
'
Columns(1).ColumnWidth = 5
W5 = Columns(1).Width
Columns(1).ColumnWidth = 6
W6 = Columns(1).Width
tCW = (TW - W5) / (W6 - W5) + 5     'Target ColumnWidth

Columns(1).ColumnWidth = tCW

End Sub

Rimane sempre da valutare l'impatto della risoluzione dello schermo

Fortunatamente l'altezza si imposta direttamente in pixel

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Modificare dimensioni di più celle per avere un quadrato

Postdi ricky53 » 22/09/22 21:13

Ciao,
Probabilmente hai uno schermo in 4k


No ho uno schermo normale di 28 pollici impostato a 3840x2160

Appena posso catturo lo schermo e faccio vedere cosa ottengo eseguendo la macro.

Per il momento ho eseguito la tua nuova macro ed ho ottenuto quanto si legge nelle istruzioni che ho commentato:
Codice: Seleziona tutto
Sub hSet()
    Dim TW As Integer, W5 As Integer, W6 As Integer, tCW As Double
   
    TW = 200                            'Target Width pixel

    Columns(1).ColumnWidth = 5 ' Viene impostata la larghezza a 5 e 62 Pixel
    W5 = Columns(1).Width
    Columns(1).ColumnWidth = 6 ' Viene impostata la larghezza a 6 e 73 Pixel
    W6 = Columns(1).Width
    tCW = (TW - W5) / (W6 - W5) + 5     'Target ColumnWidth

    Columns(1).ColumnWidth = tCW ' viene impostata la larghezza a 38,82 e 434 Pixel

End Sub


Grazie come sempre
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Modificare dimensioni di più celle per avere un quadrato

Postdi ricky53 » 22/09/22 21:34

Ciao,
scusate la mia spinacciata: lo schermo essendo impostato a 3840x2160 è a 4K !!! :D

Ho provato su uno schermo normale1920x1080 ed ho ottenuto sempre quanto ho riportato nel mio precedente messaggio.

A dopo con il file che allegherò.
Grazie
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Modificare dimensioni di più celle per avere un quadrato

Postdi ricky53 » 22/09/22 22:05

Ciao,
questi sono due file nei quali potete veder cosa ho ottenuto
Immagine

Immagine


La macro che ho utilizzato è questa

Codice: Seleziona tutto
Sub Celle_Quadrate_Anthony()
    Dim HW As Integer

    HW = 50                                 'NON sono Pixel ma altezza/larghezza riga
    Columns(1).ColumnWidth = HW / 5
    Columns(1).ColumnWidth = HW / Columns(1).Width * Columns(1).ColumnWidth
    Columns(1).ColumnWidth = HW / Columns(1).Width * Columns(1).ColumnWidth
    Columns(1).ColumnWidth = HW / Columns(1).Width * Columns(1).ColumnWidth
    Rows(1).RowHeight = HW
End Sub


Come vedete ho utilizzato 50 come valore in "HW" ma i pixel che ho ottenuto sono 100.
Non è grave basta saperlo e si agisce in modo conseguente.

La cosa importante è che la cella modificata sia QUADRATA.
Grazie di nuovo Anthony
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Modificare dimensioni di più celle per avere un quadrato":


Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti

cron