|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, devo selezionare una porzione di colonna (di lunghezza variabile) di una tabella filtrata e copiare in altra sede le celle visibili, ma non riesco a venirne fuori... mi sto ispirando a questa macro Sub Sel_Filtr_per_copia() Uriga = Range("A" & Rows.Count).End(xlUp).Row Set Area = Range("a3", Range("dv" & Uriga)).SpecialCells(xlCellTypeVisible) Area.Select End Sub che anch'essa definisce un'area di lunghezza variabile, ma che include tutte le rghe fino all'ultima...invece dovrei poter selezionare solo una parte (variabile) della colonna, una qualsiasi da col.A a col.DV, e copiarne le celle visibili in altro file... ho provato a cercare in rete, ma si vedono solo pasticci che nulla hanno a che vedere con le tue splendide creature... mi sembra che avevamo già affrontato un tema simile, ma relativo ad un altro problema (colorare una selezione in base a dei parametri assegnati) Sub coloraselezione() Dim rng As Range, rng1 As Range, rng2 As Range, area10 As Range Dim mysett As Variant, sett As Variant, Itx As Variant Dim Mval As Variant, Mval2 As Variant, mval3 As Variant Set rng = Range("B3", Range("B3").End(xlDown)) col = Selection.Column Ur = Cells(Cells.Rows.Count, col).End(xlUp).Row Set Area = Range(Cells(3, col), Cells(Ur, col)).SpecialCells(xlCellTypeVisible) For Each Itx In Area mysett = Cells(Itx.Row, 2).Value i = Itx.Row Do While Cells(i + 1, col).EntireRow.Hidden = True i = i + 1 Loop nextItx = Cells(i + 1, col).Value For Each sett In rng If sett = mysett Then riga = sett.Row Set area10 = Range(Cells(riga - 10, 3), Cells(riga, 7)) Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5) Set rng2 = Cells(riga, 3).Offset(1, 0).Resize(4, 5) For Each Mval In rng1 If Mval.Value = Itx Then Itx.Interior.ColorIndex = 34 Exit For End If Next Mval For Each Mval2 In rng2 If Mval2 = Itx And Itx.Interior.ColorIndex = xlNone Then Itx.Interior.ColorIndex = 4 End If Next Mval2 If nextItx = "" Then GoTo fine For Each mval3 In area10 If mval3 = nextItx Then With Cells(i + 1, col).Borders .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = 3 End With Exit For End If Next mval3 Exit For End If Next sett Next Itx fine: Set area10 = Nothing Set Area = Nothing Set rng = Nothing Set rng1 = Nothing Set rng2 = Nothing End Sub
Grazie assai e buona serata eZio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve quale criterio devi usare per determinare la lunghezza dell'area da selezionare? saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, a10n11 ha scritto: quale criterio devi usare per determinare la lunghezza dell'area da selezionare?
all'interno di una tabella di lunghezza variabile a seguito degli aggiornamenti (larga da col.A a col.DV), devo poter selezionare una porzione di colonna , anch'essa di lunghezza variabile, di righe filtrate e poter copiare tutto ciò che riguarda SOLO dette celle visibili. La lunghezza della selezione varia in base ai dati che devo copiare, ma riguara una sola colonna. Purtroppo non sono assolutamente in grado di dare alla macro le istruzioni in modo corretto :( Grazie assai e buon pomeriggio eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao, a10n11 ha scritto: quale criterio devi usare per determinare la lunghezza dell'area da selezionare?
all'interno di una tabella di lunghezza variabile a seguito degli aggiornamenti (larga da col.A a col.DV), devo poter selezionare una porzione di colonna , anch'essa di lunghezza variabile, di righe filtrate e poter copiare tutto ciò che riguarda SOLO dette celle visibili. La lunghezza della selezione varia in base ai dati che devo copiare, ma riguara una sola colonna. Purtroppo non sono assolutamente in grado di dare alla macro le istruzioni in modo corretto :( Grazie assai e buon pomeriggio eZio salve non mi è chiara ancoira la domanda. Se il range da selezionare è variabile (devi selezionare una porzione di colonna) bisogna pur dire alla macro quanto è estesa la porzione. Forse intendi dire che le colonne interessate hanno lunghezze diverse, quindi l'area da selezionare necessita della scelta della colonna?? saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, il problema si è risolto da solo... perché in realtà il problema ero IO :)) (della serie la stupidità non ha limite...) Incollavo il range nella stessa tabella filtrata e chiaramente mi faceva vedere solo la prima cella della selezione, mentre il resto rimaneva OVVIAMENTE nascosto dalle righe nascoste... (era la cosa che mi diceva che c'era qualcosa che non andava nel mio modus operandi e non in excel!!... cerca e cerca finalmente l'ho trovato) Chiedo scusa, non ho parole... Grazie assai e buona serata eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, d'accordo, in questo caso il problema ero io e mi sono auto-fustigato, ma se si debba lavorare col VBA? ...la mia passione per la Materia mi costringe a chiedere lumi :) a10n11 ha scritto: non mi è chiara ancoira la domanda. Se il range da selezionare è variabile (devi selezionare una porzione di colonna) bisogna pur dire alla macro quanto è estesa la porzione. Forse intendi dire che le colonne interessate hanno lunghezze diverse, quindi l'area da selezionare necessita della scelta della colonna??
beh, anche qui sicuramente il problema sono SOLO io che non riesco a spiegarmi bene. Hai ragione, bisogna pur dire alla macro quanto è estesa la porzione di celle (che, complicazione, devono essere solo quelle visibili): la porzione di celle, appartenenti alla colonna in cui opero la selezione, è quella della selezione stessa. Da profano intuisco che c'è sicuramente un gruppo di semplici istruzioni che indichino alla macro in quale colonna lavorare (es. visto sopra col = Selection.Column) e che porzione di di tale colonna copiare (es. dalla prima cella visibile selezionata all'ultima cella visibile selezionata, ma non conosco il codice appropriato). Esatto, le colonne interessate hanno lunghezze diverse perché appartenenti a tabelle che di volta in volta si allungano a causa dell'aggiornamento dei dati, ma credo che alla macro interessi solo il range in cui debba lavorare (es. copia l'intervallo di celle visibili della colonna di selezione da cella visibile L24 di inizio selezione a cella visibile L52 di fine selezione). Grazie infinite, buona Domenica eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve sperando di aver capito, prova questa: ( prende in considerazione, la colonna della cella selezionata) Sub seleziona() colonna = Selection.Column uriga = Cells(Rows.Count, colonna).End(xlUp).Row Set Area = Range(Cells(3, colonna), Cells(uriga, colonna)).SpecialCells(xlCellTypeVisible) Area.Select End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, innanzi tutto Grazie per l'immensa pazienza nell'assecondarmi... (è immensa davvero)
purtroppo la macro seleziona l'intera colonna, credo che la causa sia da attribuire all'istruzione uriga = Cells(Rows.Count, colonna).End(xlUp).Row che invece dovrebbe puntare al solo intervallo di celle visibili dalla prima cella all'ultima selezionate, appoggiandosi a colonna = Selection.Column per l'individuazione della colonna. Grazie assai, buona serata eZio
|
|
Guest |