Sviluppare funzionalita su Microsoft Office con VBA Excel VBA Come sapere se tutto il testo è Visibile in una cella

LoginRegistrati
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #16944 Risposta
    Luca73
    Luca73
    Partecipante
      17 pts

      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

       

      #16946 Risposta

      vecchio frac
      Senior Moderator
      • Sfida #1
        171 pts

        Luca73 ha scritto:

        causa nuovo lavoro

        hai provato con wraptext e autofit?

        range("A1").wraptext = true
        range("A1").rows.AutoFit
        

        (ho scritto di getto)

        #16950 Risposta
        Luca73
        Luca73
        Partecipante
          17 pts

          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.
          #16953 Risposta
          Marius44
          Marius44
          Moderatore
          • Sfida #4
            11 pts

            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

            #16954 Risposta

            vecchio frac
            Senior Moderator
            • Sfida #1
              171 pts

              Marius44 ha scritto:

              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.

              #16955 Risposta

              vecchio frac
              Senior Moderator
              • Sfida #1
                171 pts

                Luca, come si riproduce il tuo scenario? è per esempio la cella G42 del foglio Db che deve essere assestata?

                #16956 Risposta
                Luca73
                Luca73
                Partecipante
                  17 pts

                  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

                  #16957 Risposta
                  Luca73
                  Luca73
                  Partecipante
                    17 pts

                    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 

                    #16960 Risposta

                    vecchio frac
                    Senior Moderator
                    • Sfida #1
                      171 pts

                      Luca73 ha scritto:

                      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.

                      #16963 Risposta
                      Luca73
                      Luca73
                      Partecipante
                        17 pts

                        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

                        #16965 Risposta

                        vecchio frac
                        Senior Moderator
                        • Sfida #1
                          171 pts

                        LoginRegistrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: Excel VBA Come sapere se tutto il testo è Visibile in una cella
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni:



                        vecchio frac - 2748 risposte

                        albatros54
                        albatros54 - 741 risposte

                        patel
                        patel - 636 risposte

                        Marius44
                        Marius44 - 564 risposte

                        Luca73
                        Luca73 - 532 risposte