› Excel e gli applicativi Microsoft Office › Testo in colonna in Textbox su foglio2 rispettando la riga
-
AutoreArticoli
-
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.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
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 Subcon 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 SubAttenzione non mi sono preoccupato di gestire la faccenda della prima riga libera; lascio a te l'incombenza
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 eccCome 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.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.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`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!
Ovviamente "MioFile.xlsx" deve essere aperto.
Sostituisci i dati MioFile e MioIntervallo con i tuoi.
Alfredo
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.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
Ho capito.
Ti ringrazio per l'aiuto che mi hai dato e adesso vado a documentarmi sulla proprietà CurrentRegion.
Grazie mille e buona giornata!
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
Se sullo sheet2 vi fosse un'intestazione l'istruzione (che va all'interno del ciclo For)
n = Cells(Rows.Count, 9).End(xlUp).Row + 1sarebbe 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 iIn 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 + 1non 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
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 SubOra va alla grande!
Grazie 1000000000000000000
..Ma cosa vuol dire questa istruzione?:
Dim i As IntegerInteger?
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
-
AutoreArticoli
