Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro che lavora su elementi filtrati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro che lavora su elementi filtrati

Postdi frank.78 » 13/04/16 02:12

salve, spiego il mio problema:

io ho realizzato (tramite registrazione) questa semplice macro... il problema è che essa deve agire sui dati filtrati (ossia quelli visibili) e non su tutto il foglio...
nel documento in cui ho registrato la macro.. essa prima cancella il contenuto delle celle (E12:G12) e quindi riordina il contenuto delle colonne E:G...
il problema è che se io applico questa macro ad un altro set di dati... essa mi cancella sempre le celle (E12:G12)... mentre io voglio che mi cancelli la celle (E?:G?).. dove il ? rappresenta la prima riga filtrata del foglio (escludendo ovviamente l'intestazione).. che ovviamente non sarà sempre la riga 12...


Codice: Seleziona tutto
Sub cancella()
'
' cancella Macro
'

'
    Range("E12:G12").Select
    Selection.ClearContents
    Columns("E:G").Select
    ActiveWorkbook.Worksheets("conferma").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("conferma").Sort.SortFields.Add Key:=Range( _
        "E2:E1500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("conferma").Sort.SortFields.Add Key:=Range( _
        "F2:F1500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("conferma").Sort
        .SetRange Range("E11:G1500")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("U1").Select
End Sub
frank.78
Utente Junior
 
Post: 10
Iscritto il: 17/02/16 00:46

Sponsor
 

Re: macro che lavora su elementi filtrati

Postdi Anthony47 » 13/04/16 11:37

Prova a sostituire le due righe Select e ClearContents con questa:
Codice: Seleziona tutto
Range("E1:G10000").SpecialCells(xlCellTypeVisible).ClearContents

Se il tuo set di dati non comicncia in riga 2 e non sei certo che finisca enro riga 10mila adatta di conseguenza

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro che lavora su elementi filtrati

Postdi frank.78 » 13/04/16 13:26

l'ho modificata in questo modo.. (se ho capito bene)..

Codice: Seleziona tutto
Sub cancella()
'
' cancella Macro
'

'
    Range("E1:G1000").SpecialCells(xlCellTypeVisible).ClearContents
    Columns("E:G").Select
    ActiveWorkbook.Worksheets("conferma").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("conferma").Sort.SortFields.Add Key:=Range( _
        "E2:E1500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("conferma").Sort.SortFields.Add Key:=Range( _
        "F2:F1500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("conferma").Sort
        .SetRange Range("E11:G1500")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("U1").Select
End Sub


il problema è che così adesso mi cancella tutti i dati visibili contenuti nelle tre colonne e non solo la prima riga...

ho provato anche a scrivere

Range("E1:G1").SpecialCells(xlCellTypeVisible).ClearContents

però mi cancella solo l'intestazione...

mentre se scrivo

Range("E2:G2").SpecialCells(xlCellTypeVisible).ClearContents

spunta il messaggio celle non trovate....
frank.78
Utente Junior
 
Post: 10
Iscritto il: 17/02/16 00:46

Re: macro che lavora su elementi filtrati

Postdi Anthony47 » 13/04/16 22:41

Ah... In effetti avevi detto "mentre io voglio che mi cancelli la celle (E?:G?).. dove il ? rappresenta la prima riga filtrata del foglio"
Allora:
Codice: Seleziona tutto
Range("E2:G10000").SpecialCells(xlCellTypeVisible).Cells(1, 1).Resize(1, 3).ClearContents


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro che lavora su elementi filtrati

Postdi frank.78 » 13/04/16 23:19

ok... funziona grazie ;)
frank.78
Utente Junior
 
Post: 10
Iscritto il: 17/02/16 00:46


Torna a Applicazioni Office Windows


Topic correlati a "macro che lavora su elementi filtrati":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti

cron