Excel e gli applicativi Microsoft Office Testo in colonna in Textbox su foglio2 rispettando la riga

Login Registrati
Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
  • Autore
    Articoli
  • #16442 Score: 0 | Risposta

    Gret
    Partecipante

      Ciao a tutti,

      ho bisogno del vostro aiuto per risolvere questo problema e sinceramente non so se si può fare ma io chiedo comunque.

      In un foglio excel ho varie colonne, seleziono quella che mi serve, tasto destro, copio, apro userform e la incollo nella textbox (con proprietà multiline attiva) ed esce il testo in colonna.

      Ora... come dovrei fare affinchè il testo in colonna esce in riga a partire da I a S del Foglio2?

      Esempio testo in colonna: 1 2 3 4 5 6 7 8 9 10 11

      Esempio testo su foglio2: 1 (I2), 2 (J2), 3(K2), 4(L2), 5(M2) ecc

      Non so se è chiaro, ma vi allego un file di esempio così potrete capire meglio di cosa stia parlando.  

      Come sempre vi ringrazio in anticipo per ogni suggerimento e buona continuazione  

      N.B nel file di esempio, nel foglio2, la riga da I a S ha due colori, significa che che i dati li devo aggiungere non sovrascrivere.

      Allegati:
      You must be logged in to view attached files.
      #16444 Score: 0 | Risposta

      alfrimpa
      Partecipante
        33 pts

        Ciao Gret

        Non credo che la textbox sia il controllo adatto per fare quello che chiedi.

        Anche se vedi molti valori essi sono comunque un'unica stringa.

        Forse una listbox?

        Alfredo

        #16445 Score: 1 | Risposta

        alfrimpa
        Partecipante
          33 pts

          Io farei così

          Sostituirei la textbox con una listbox ed aggiungerei due commandbutton.

          Con il primo popolerei la listbox con questo codice

          Private Sub CommandButton1_Click()
          Dim i As Long
          Dim ur As Long
          ur = Sheets(1).Cells(Rows.Count, "c").End(xlUp).Row
          For i = 3 To ur
              Me.ListBox1.AddItem Range("c" & i)
          Next i
          End Sub
          

          con il secondo trasferirei i dati sul secondo foglio con questo codice

          Private Sub CommandButton2_Click()
          Dim i As Long
          For i = 0 To Me.ListBox1.ListCount - 1
              Sheets(2).Cells(5, i + 9).Value = Me.ListBox1.List(i)
          Next i
          End Sub
          

          Attenzione non mi sono preoccupato di gestire la faccenda della prima riga libera; lascio a te l'incombenza   

           

          #16446 Score: 0 | Risposta

          Gret
          Partecipante

            Ciao Alfredo e grazie per essere intervenuto.

            Ti ringrazio per i due codici che hai postato!   ma ce un ma... cioè io devo poter scegliere la colonna da inserire poi nel foglio2. Il codice da te proposto copia la colonna che sta nella colonna C, ma se ci fosse più di una colonna? Se la colonna da copiare è in D o E o Z ecc

            Come dovrei fare affinchè possa scegliere?

            Attenzione: il primo file che ho condiviso era solo un esempio e chiedo scusa se non ho ben spiegato anche nel file. Lo ri-allego così si vede meglio. In questo esempio la colonna da copiare è quella blu.

            Allegati:
            You must be logged in to view attached files.
            #16448 Score: 0 | Risposta

            Gret
            Partecipante

              Piccolo aggiornamento: la colonna da copiare ha i numeri di colore rosso. Si può scegliere la colonna che ha questa condizione? (spero che si possa fare!)  

              R-ri-allego il file.  

              Grazie dell'aiuto.

              Allegati:
              You must be logged in to view attached files.
              #16450 Score: 1 | Risposta

              alfrimpa
              Partecipante
                33 pts

                Avendo una listbox nell'userform prova questo codice (associato ad un commandbutton) che è stato scritto esclusivamente sulla base dell'esempio postato.

                `Private Sub CommandButton1_Click()
                Dim rng As Range
                Dim cel As Range
                For Each cel In Range("a1:k50")
                    If cel.Font.ColorIndex = 3 Then
                        Set rng = cel.CurrentRegion
                    End If
                Next cel
                For Each cel In rng
                    Me.ListBox1.AddItem cel.Value
                Next cel
                End Sub`
                #16451 Score: 0 | Risposta

                Gret
                Partecipante

                  Ciao Alfredo grazie mille della tua risposta!

                  Naturalmente funziona alla grande . Solo una cosa, se volessi estendere il codice a un file esterno, nel senso che la colonna da cercare sarebbe su un altro file, devo solo inserire il percorso e dove si trova giusto?

                  So bene che non c'entra nulla col titolo, mi è sfuggito di scriverlo     ma mi saresti di grande aiuto.

                  Grazie mille ancora!

                  #16453 Score: 1 | Risposta

                  alfrimpa
                  Partecipante
                    33 pts

                    Prova a sostituire questa

                    For Each cel In Range("a1:k50")

                     

                    For Each cel In Workbooks("MioFle.xlsx").Worksheets("MioFoglio").Range("MioIntervallo")
                    
                    #16454 Score: 0 | Risposta

                    alfrimpa
                    Partecipante
                      33 pts

                      Ovviamente "MioFile.xlsx" deve essere aperto.

                      Sostituisci i dati MioFile e MioIntervallo con i tuoi.

                      Alfredo

                      #16455 Score: 0 | Risposta

                      Gret
                      Partecipante

                        Non funziona, non rispetta il colore rosso.

                        Nel senso che mi riporta nella listbox tutto ciò che trova nell'intervallo compresa la colonna con i numeri in rosso.  

                        Allego i file e grazie del prezioso aiuto.

                        (il file "Provacolonna" è il file esterno da cui prendere la colonna in rosso)

                        Allegati:
                        You must be logged in to view attached files.
                        #16459 Score: 1 | Risposta

                        alfrimpa
                        Partecipante
                          33 pts

                          A me funziona.

                          L'unica accortenza è che la colonna con i dati in rosso non deve avere al suo intorno riche/colonne compilate (questo perchè ho usato la proprietà CurrentRegion dell'oggetto Range; documentati su questo).

                          Sposta i dati dalla colonna D alla E e vedrai che funziona.

                          Probabilmente ma non ne sono certo anche non aprendo il file "Provacolonna" funziona ugualmente ovviamente mettendo nel codice il suo percorso completo.

                          Alfredo

                          #16460 Score: 0 | Risposta

                          Gret
                          Partecipante

                            Ho capito.

                            Ti ringrazio per l'aiuto che mi hai dato e adesso vado a documentarmi sulla proprietà CurrentRegion.  

                            Grazie mille e buona giornata!  

                             

                            #16475 Score: 0 | Risposta

                            Gret
                            Partecipante

                              Alfredo buongiorno,

                              Attenzione non mi sono preoccupato di gestire la faccenda della prima riga libera; lascio a te l'incombenza

                              dimmi che con "l'incombenza di trovare l'ultima riga occupata" sto sulla strada giusta :

                              `Dim i As Long, n As Long
                              n = Cells(Rows.Count, 9).End(xlUp).Row + 1
                              For i = 0 To Me.ListBox1.ListCount - 1
                                  Sheets(2).Cells(n, i + 9).Value = Me.ListBox1.List(i)
                              Next i`

                              Grazie mille

                              #16477 Score: 0 | Risposta

                              alfrimpa
                              Partecipante
                                33 pts

                                Se sullo sheet2 vi fosse un'intestazione l'istruzione (che va all'interno del ciclo For)

                                n = Cells(Rows.Count, 9).End(xlUp).Row + 1

                                sarebbe giusta ma poichè lo sheet2 è vuoto dovresti gestire la cosa con un If in questo modo (io non l'ho provato)

                                For i = 0 To Me.ListBox1.ListCount - 1
                                If Range("I5").Value = "" Then
                                    n = 5
                                    Else
                                    n = Cells(Rows.Count, 9).End(xlUp).Row + 1
                                End If
                                    Sheets(2).Cells(n, i + 9).Value = Me.ListBox1.List(i)
                                Next i
                                
                                #16478 Score: 0 | Risposta

                                Gret
                                Partecipante

                                  In questo caso se in I5 non è presente nessun valore me li inserisce lì, giusto?

                                  Però fammi capire una cosa, questa istruzione:

                                  n = Cells(Rows.Count, 9).End(xlUp).Row + 1

                                  non serve a riportare i dati alla riga successiva? Se fosse così, non funziona  

                                  Ho provato a cambiare i dati della tabella da riportare sul foglio, ma me li sovrascrive sulla riga I5.

                                  Grazie ancora dell'aiuto  

                                  #16481 Score: 1 | Risposta

                                  alfrimpa
                                  Partecipante
                                    33 pts

                                    Fai cosi.

                                    Sullo Sheet2 inserisci un'intestazione (anche fittizia da I4 ad S4 che eventualmente nascondi.

                                    Al secondo CommandButton sull'userform associa questo codice

                                    Private Sub CommandButton2_Click()
                                    Dim i As Integer
                                    For i = 0 To Me.ListBox1.ListCount - 1
                                        n = Sheets("Sheet2").Cells(Rows.Count, i + 9).End(xlUp).Row
                                        Sheets(2).Cells(n + 1, i + 9).Value = Me.ListBox1.List(i)
                                    Next i
                                    End Sub
                                    
                                    #16486 Score: 0 | Risposta

                                    Gret
                                    Partecipante

                                      Ora va alla grande!

                                      Grazie 1000000000000000000 ..

                                      Ma cosa vuol dire questa istruzione?:

                                      Dim i As Integer

                                      Integer?

                                      #16487 Score: 0 | Risposta

                                      alfrimpa
                                      Partecipante
                                        33 pts

                                        Beh qui siamo all'ABC del VBA.

                                        Con quella istruzione si dichiara una variabile di tipo Integer che può memorizzare valori che vanno da  -32.768 a + 32.767

                                        Ma anche qui devi documentarti su cosa sono le variabili, di che tipo possono essere e, in base al tipo, quali valori possono in esse essere memorizzati.

                                        Alfredo

                                         

                                         

                                         

                                        #16488 Score: 0 | Risposta

                                        Gret
                                        Partecipante

                                          Ho capito, grazie mille dell'aiuto e della pazienza!

                                          Buona giornata  

                                        Login Registrati
                                        Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
                                        Rispondi a: Testo in colonna in Textbox su foglio2 rispettando la riga
                                        Gli allegati sono permessi solo ad utenti REGISTRATI
                                        Le tue informazioni: