› Sviluppare funzionalita su Microsoft Office con VBA › Excel VBA Come sapere se tutto il testo è Visibile in una cella
-
AutoreArticoli
-
Ciao a tutti
innanzitutto mi scuso per la poca presenza nel forum negli ultimi periodi ma, causa nuovo lavoroo sono piuttpsto presso....
Ora la domanda.
Ho un file excel con due fogli. Nel primo ci sono dei codici in colonna A e delle descrizioni in colonna B.
Nel secondo foglio, tramite un Cerca.Vert (Vlookup) riporto la descrizione in una cella.
La larghezza della cella di destinazione è fissa ma posso variare l'altezza tramite VBA.
Ora se la descrizione è lunga io vedo nella cella sonlo una parte del testo in quanto se va a capo non vedo la seconda linea.
C'è un modo per capire se tutto il testo è visulizzato oppure no?
Al momento tramite VBA ho brutalmente fatto una conta dei caratteri e se tale numero supera un falore fissato aumento l'altezza della riga.
C'è un sistema più corretto.
Qui sotto lo stralcio del codice.
For Each MiaCella In Union(Range("F10", "F60"), Range("F65", "F78")) MiaCella.Select If MiaCella.Text = "" Then If MiaCella.Rows.RowHeight <> 22.5 Then MiaCella.Rows.RowHeight = 22.5 End If ElseIf Len(MiaCella.Text) < 78 Then If MiaCella.Rows.RowHeight <> 22.5 Then MiaCella.Rows.RowHeight = 22.5 End If Else MiaCella.Rows.RowHeight = 22.5 * (1 + (Len(MiaCella.Text) \ 75)) End If Next
Ciao Luca
causa nuovo lavoro
hai provato con wraptext e autofit?
range("A1").wraptext = true range("A1").rows.AutoFit
(ho scritto di getto)
Ciao
no, non funziona.
Allego un file che ho ottenuto dal mio cancellando le parti sensibili.
Ci sono Due fogli. nel primo (DB) ci sono dei dati che richiamo nel secondo mediante la cella gialla.
Ho inserito anche la macro.
Idee?
Non è neanche colpa delle celle unite. Ho provato a disunirle ma non cambia niente.
Ciao
Luca
Allegati:
You must be logged in to view attached files.Ciao a tutti
Prova così (per la cella A1):
Range("A1").WrapText = True
Ovviamente così facendo ti riporta il testo a capo ma non "adatta" la cella in orizzontale.
Oppure ti interessa altro?
Il metodo .Autofit funziona SOLO su intere righe o intere colonne non su una cella singola.
Fai sapere. Ciao,
Mario
Il metodo .Autofit funziona SOLO su intere righe o intere colonne non su una cella singola
Già, anch'io avevo pensato a Wraptext. E il mio suggerimento prevedeva anche Range("A1").Rows.Autofit per l'intera riga.
Ma Luca dice che non funziona, quindi provo a guardare il suo file.
Luca, come si riproduce il tuo scenario? è per esempio la cella G42 del foglio Db che deve essere assestata?
Ciao cambiando D6 vengono riempite le celle in C10:J60 e C65:J78.
Il problema sussiste nei testi della colonna F (unita con G e H). che riportano del testo dal folgio DB
Come esempio le scritte "testolungo" ripetute.
Mi piacerebbe che qualora il testo superasse la larghezza della cella (larghezza di colonna), la cella aumentasse la sua altezza (altezza di riga) per adattarsi.
In alternativa mi basta riuscire nell'intento con una macro da lanciare con il pulsante. Il pulsante oltre ad arrangiare l'altezza righe, salva il file come pdf (questa parte è OK e non è inclusa nel file allegato)
Sono stato sufficientemente chiaro?
Ho fatto un aprova su un foglio nuovo e usando un VLookup da un altrpo foglio e WrapText risolgo il problema. Nel mio file invece no....non capisco perchè
Ciao
Luca
Ho approfondito un po' e penso di aver capito che ci sono problemi sia di merging delle celle sia di aver impostato una altezza a mano per la riga.
ho provato a togliere l'unione, cancellare l'altezza della riga e poi il Wraptext funziona....
Ciao
Luca
ci sono problemi sia di merging delle celle sia di aver impostato una altezza a mano per la riga.
Sì, è un problema frequente che capita anche ai miei colleghi che mi chiamano spesso per situazioni simili. E spesso ci si accorge solo dopo la stampa (a video magari si legge tutta la cella regolarmente). Io di solito sconsiglio l'unione delle celle se si può farne a meno. Non so se è efficace creare l'automatismo che toglie il merging, adatta la cella al contenuto e poi riapplica il merging.
Ciao e GRAZIE a tutti.
togliere il merging non risolve il problema perchè cambia la larghezza delle colonne.
Il modello l'ho ereditato e non ci posso fare più di tanto.
Ho "risolto" in maniera molto semplice ma sporca. Ho creato una colonna (che poi nascondo) che ha la formula che riporta il testo incrimanato. La colonna di appoggio ha un larghezza pari alla somma delle tre colonne in cui le celle sono unite. pertanto il textwrap sulla cella non unita della colonna di appoggio + Autofit mi aggiusta l'altezza delle righe incluso qulle con celle unite.
E' brutta ma funziona....(trenne con testi molto vicini alla larghezza della colonna) ho risolto forzando la largezza della colonna appoggio leggermente più larga della somma delle tre di partenza. e sembra funzionare.
Ciao
Luca
-
AutoreArticoli