Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
<cut>
In questo modo son riuscito a farlo funzionare; so che active e select "sono il male" come dici tu Mauro, ma poichè la macro (discretamente complessa, almeno per me) è lanciata da un altro file, se non attivo il Foglio1 di Mario e seleziono la cella A1 dove c'è materialmente la "freccetta" del filtro auotmatico per quanto mi sia scervellato e cercato aiuto in giro, non son riuscito a farla funzionare senza activate e select. C'è un modo?
Inoltre al termine della procedura, son costretto a rimettere il filtro automatico in A1 che altrimenti stranamente si perde usando
.Range("A1").Select
Selection.AutoFilter
Ad ogni modo così mi funziona, ma chiarimenti per poter eseguire l'istruzione senza dover per forza attivare Mario e selezionare A1 sarebbero graditi.
Grazie per la risposta, ciao
Fabrizio
Ecco una possibile soluzionesenza tanti Select/Activate:
Public Sub m()
Dim wk As Workbook
Dim sh As Worksheet
Dim sh2 As Worksheet
Set wk = Workbooks("Mario.xls")
Set sh2 = ThisWorkbook.Worksheets("Foglio2")
With wk
Set sh = .Worksheets("Foglio1")
End With
With sh
.Range("A1").AutoFilter Field:=1, Criteria1:="a1"
.Range("A1:M3000").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=sh2.Range("A1:D2"), _
CopyToRange:=sh2.Range("A3"), _
Unique:=False
.Range("A1").AutoFilter Field:=1
End With
Set sh = Nothing
Set sh2 = Nothing
Set wk = Nothing
End Sub
Questo se, come mi sembra di aver capito, Mario.xls è il file che contiene la tabella da filtrare in Foglio1 e se il copia/incolla dei dati lo vuoi nel Foglio2 del files che contiene il codice.
--
La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.
--
Mauro Gamberini - Microsoft© MVP(Excel)