Grandezza dei caratteri condizionale
Hai un problema con Excel? 
Grandezza dei caratteri condizionale
di MAV57 data: 28/03/2014 01:14:09
Buonasera a tutti,
mi presento sono Marcello da Napoli; un po' per passione e per divertimento, per il resto per impegni professionali, sono a contatto con questo programma che non finisce mai di stupirmi.
Ben trovati a tutte e a tutti.
Voglio sottoporre un quesito per un problema che sto cercando di affrontare: in un foglio ho alcune celle che al verificarsi di una condizione si riempiono con del testo.
Ho provveduto a rendere il testo più sintetico possibile ma non è stato sufficiente; neanche con una dimensione ridotta preventivamente del carattere ho risolto il problema perché non più leggibile.
Domanda:
posso in modo condizionale variare la grandezza dei caratteri in virtù della lunghezza del testo contenuto?
Esempio: con 45 caratteri la dimensione del testo può essere 12, oltre 45 devo ridurre.
La mia idea sarebbe quella di dimensionare il carattere, al variare della lunghezza del contenuto, lasciando inalterata la dimensione della cella. Se non ricordo male qualcosa di simile è presente in Publisher o software simile.
*********
Grazie!
Marcello
*********
di Lucas87 data: 28/03/2014 08:03:51
Certo che c'è.
Tasto DX sulla cella o sul gruppo di celle
Formato cella
Scheda allineamento
Spunta "riduci e adatta"
Viene modificata la dimensione del carattere mantenendo fissa la dimensione della cella
di MAV57 data: 28/03/2014 11:51:12
Grazie per la puntuale e sollecita risposta!
Questa soluzione è utile. La mia intenzione era quella di utilizzare una macro o una soluzione condizionale per verificare di volta in volta se le celle interessate (purtroppo non contigue) dovessero avere come grandezza il carattere 12 oppure ridursi di conseguenza: in sintesi impostare il carattere 12 solo se la lunghezza del testo lo consente.
*********
Grazie!
Marcello
*********
di Mister_x (utente non iscritto) data: 28/03/2014 15:51:53
ciao
sub da mettere nel foglio
ciao
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Len(Target.Value) > 45 Then
Cells(Target.Row, Target.Column).ShrinkToFit = True
End If
End Sub
|
di MAV57 (utente non iscritto) data: 29/03/2014 03:25:58
Grazie per la soluzione!
Ne faccio subito tesoro!
*********
Grazie!
Marcello
*********
di lepat (utente non iscritto) data: 29/03/2014 08:04:53
un'altra soluzione che modifica la dimensione dei caratteri invece di adeguare la larghezza della colonna
Sub Adatta1()
Dim nWidth As Single, nHeigth As Single, cell As Range
Const nMin As Single = 7 'dimensione minima scelta
For Each cell In Range("A1:A10")
With cell
nWidth = .ColumnWidth
.Columns.AutoFit
Do While .ColumnWidth > nWidth
If .ColumnWidth <= nWidth Then
.ColumnWidth = nWidth
Else
.Font.Size = Application.WorksheetFunction.Max(nMin, .Font.Size - 1)
.Columns.AutoFit
End If
Loop
.ColumnWidth = nWidth
End With
Next
End Sub
|
di MAV57 (utente non iscritto) data: 29/03/2014 19:06:45
Grazie per questa soluzione!
Era quella che in verità speravo di ottenere per semplificarmi la vita.
La provo subito!
*********
Grazie!
Marcello
*********
di MAV57 data: 29/03/2014 20:41:29
Buonasera!
Ho provato entrambe le soluzioni.
Premesso che sono a digiuno di vba, non so dove metter le mani.
Riguardo la prima riconosco che oltre a mettere il codice nel foglio non riesco a vedere dove verificarne il funzionamento.
Riguardo la seconda mi son reso conto che qualcosa non va ma non so cosa. Sembra che vada in loop.
Questo è il file campione.
www.dropbox.com/sh/d2sw1xo2v57waf7/fY9UcTlTJ1
*********
Grazie!
Marcello
*********
di lepat (utente non iscritto) data: 30/03/2014 06:13:43
prova così
Sub Adatta1()
Dim nWidth As Single, nHeigth As Single, cell As Range
Const nMin As Single = 7 'dimensione minima scelta
For Each cell In Range("F3:F40")
If Len(cell.Text) > 45 Then cell.Font.Size = 7
Next
End Sub |
di Mister_x (utente non iscritto) data: 30/03/2014 16:12:10
ciao
scaricato il tuo file, e fatto alcune prove ho dedotto di effettuare la riduzione del font in base a step di lunghezza superiore a 45 dato che tu ai gia' inserito le celle a ritorno a capo automatico
questi valori li puoi variare in base alle tue esigenze
la sub() in questione va inserita nel foglio di utilizzo
ciao
Sub ridimensiona()
Dim cell As Range
For Each cell In Range("F3:F" & Cells(Rows.Count, "F").End(xlUp).Row)
If Len(cell.Text) < 44 Then
cell.Font.Size = 14
ElseIf Len(cell.Text) < 50 Then
cell.Font.Size = 12
ElseIf Len(cell.Text) < 56 Then
cell.Font.Size = 10
Else
cell.Font.Size = 8
End If
Next
End Sub
|
di MAV57 (utente non iscritto) data: 01/04/2014 11:01:08
Buongiorno!
Ho provato entrambe le soluzioni. Funzionano come speravo.
Le devo adattare al foglio su cui devo lavorare (non quello dell'esempio): penso di usare un pulsante per avviare la macro prima di avviare la stampa del report ogni volta che termina la nuova elaborazione.
Che ne pensate dell'associazione al pulsante? O c'è un'altra soluzione?
*********
Grazie!
Marcello
*********
Vuoi Approfondire?