PDA

View Full Version : [VBA] Dimensionamento automatico del font in Excel


aquila1980
24-11-2008, 18:32
Ho una serie di celle che, per pulizia del form che sto preparando, è opportuno che abbiano la stessa grandezza. Queste celle contengono scritte di lunghezza molto variabile.

Per far visualizzare tutta la scritta contenuta nelle celle con frasi lunghe, ho dovuto ridurre di molto il carattere, perdendo però troppo in leggibilità. Al momento tutte le celle sono impostate con lo stesso carattere (6), ma vorrei fare in modo che ogni cella abbia una dimensione del carattere adatta alla grandezza della cella (che come ripeto è standard), possibilmente senza dovermi ripassare le celle una ad una ed effettuare manualmente l'operazione.

Quello che cerco in sostanza è se esista una qualche istruzione che, presa una determinata cella ed il suo contenuto, adatti la grandezza del font al massimo possibile affinchè la scritta sia leggibile senza uscire dai bordi.

MarcoGG
25-11-2008, 10:47
E' un po' un casino... :D
Non mi risulta esista un funzione specifica per accorgersi se il testo è più lungo della cella... C'è chi risolve con chiamate alle API, calcolo dei pixel o twips occupati in larghezza dalla stringa...

Io suggerirei un metodo "furbo" :

1. Per ogni cella controllata creare una textbox temporanea che abbia stessa font e stringa della cella. La proprietà AutoSize della TextBox sia True. ;)

2. Rilevare ciclicamente la .Width che, se maggiore della .Width della cella produce ad ogni ciclo una diminuzione della dimensione Font di un certo quid ( tipicamente uno 0.5 )...

aquila1980
25-11-2008, 21:18
Alla fine ho risolto così: visto che le celle da controllare erano qualche migliaio, ma erano generate sempre dalle stesse 30-40 stringhe di cui ho l'elenco, ho controllato manualmente queste 30-40 celle riportando accanto ad ognuna il font massimo consentito, poi con dei cicli combinati di cerca verticale e ridimensionamento del carattere ho sistemato tutto velocemente.