|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Salve, ho un problema relativo ad un programma con excels 2003 passato a 2007 adesso vi spiego il mio problema: con office 2003 quando filtravo i dati ed andavo ad incollarli bastava incollare solo valore è la macro mi incollava solo i dati filtrati ma con il 2007 mi incolla tutta la colonna. Ho provato ad inserire la stringa prima di copia selection.specailcells(xlcellTypevisibile). select ma il problema nasce quando il filtro è vuoto mi incolla tutta la colonna e mi da errore interrompendo la macro.Mi potete aiutare?? GRazie.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve puoi mostrare la macro intera? saluti Giap
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Grazie per il tuo interessamento .
macro excel 2003 Sheets("Giovanni").Select Selection.AutoFilter Field:=4, Criteria1:="neg." Range("A6:b2000").Select Selection.Copy Sheets("Foglio5").Select Range("S6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Giovanni").Select Range("f6:g2000").Select Selection.Copy Sheets("Foglio5").Select Range("t6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
macro excel 2007
Sheets("Giovanni").Select Selection.AutoFilter Field:=4, Criteria1:="=n*" Range("A6:b2000").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Sheets("Foglio5").Select Range("S6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Giovanni").Select Range("f6:g2000").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Sheets("Foglio5").Select Range("t6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
naturalmente sulla stessa colonna devo filtrare altri dati come ad esempio alto,basso,medio ma se sono assenti la macro mi da errore. Ti sarei veramente grato se riuscissi a risolvere il problema. Michele
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Mi sono dimenticato di scrivere il messaggio di errore: Errore di run-time '1004' non è stata trovata alcuna cella. Buona serata. Grazie
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve il tuo problema è che quando lanci la macro, la cella selezionata nel foglio è al di fuori dello spazio occupato dalla tabella e la macro non sa a che range applicare il filtro. prova con questa modifica: Sheets("Giovanni").Select Range("a6").Select Selection.AutoFilter Field:=4, Criteria1:="=n*" Range("A6:b2000").SpecialCells(xlCellTypeVisible).Copy Sheets("Foglio5").Select Range("S6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Giovanni").Select Range("f6:g2000").SpecialCells(xlCellTypeVisible).Copy Sheets("Foglio5").Select Range("t6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False saluti Giap
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Grazie Giap proverò. Scusa se aproffitto della tua generosità , come posso filtrare sulla stessa colonna altri dati come ad esempio =n*,=a*;=b*,=m* quando non trova una lettera passa alla successiva. Michele
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Macro non funzionante si blocca su Range("A6:b2000").SpecialCells(xlCellTypeVisible).Copy colore giallo. La cosa mi fa incavolare, ho usato il programma per 1 anno senza problemi ma adesso che mi hanno sostituito il pc ho excel 2007 che mi da problemi con i filtri. Grazie Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve non credo sia un problema di versione di Excel, se nel range filtrato non ci sono celle visibili è normale che nell'istruzione copy venga scaturito l'errore. In questo caso necessita gestire l'errore. in base alla tua seconda richiesta passare il criterio del filtro ad una altro carattere, è risolvibile creando un array con l'elenco dei caratteri che si vogliono filtrare. La macro che segue fa ( meglio.. dovrebbe fare questo) se il filtro non trova riscontri, passa al carattere successivo e si ferma quando trova un criterio valido. in questa riga con la sintassi che vedi devi elencare i tuoi valori di criterio: myarray = Array("z*", "n*", "e*") Sub filtra() On Error Resume Next myarray = Array("z*", "n*", "e*") Sheets("Giovanni").Select Range("a1").Select For n = LBound(myarray) To UBound(myarray) Selection.AutoFilter Field:=4, Criteria1:="=" & myarray(n), Operator:=xlAnd Set rng = Range(("C2"), Range("C29")).SpecialCells(xlCellTypeVisible) If Err.Number = 1004 Then Resume Else Selection.AutoFilter Field:=4, Criteria1:="=n*" Range("A6:b2000").SpecialCells(xlCellTypeVisible).Copy Sheets("Foglio5").Select Range("S6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Giovanni").Select Range("f6:g2000").SpecialCells(xlCellTypeVisible).Copy Sheets("Foglio5").Select Range("t6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Exit For End If Next n End Sub saluti Giap
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Grazie Giap poverò la tua macro, ma ti posso garantire che nella versione 2003 i dati filtrari venivano copiati solo quelli a video , ripeto ho usato questa macro per 1 anno.
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Non ho provato però leggendo la macro non credo che funzioni perchè non è detto che ci sia per forza un valore di criterio: myarray , pertanto ti chiedo se partiamo solo da un dato nel primo caso n* (la macro iniziale) si potrebbe mettere un criterio che controlli la colonna filtrata (C) se contiene il dato n* magari con If / elseif facendo partire la macro solo se trova n* oppure uscire. Che cosa ne pensi? Potrebbe Funzionare, il mio programma filtrava n* in colonna C poi copiava i dati della colonna A:B ecc. incollandoli nel foglio dove avevo un resoconto. Grazie ancora Michele.
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Con l'impostazione iniziale macro excel 2007 riesco a copiare i dati a video ma quando manca il valore la macro si blocca.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve la differenza tra le due macro che hai postato è nell'aggiunta dell'istruzione "Specialcells" che nel caso di nessun riscontro nel filtro manda in errore. La differenza strana tra 2003-2007 è che il comando copy di celle filtrate copia solo le celle visibili nel 2003 mentre strano ma vero non funge con il 2007 vedi se la modifica alla macro può andarti bene. Sub filtra() On Error Resume Next Sheets("Giovanni").Select Range("a1").Select Selection.AutoFilter Field:=4, Criteria1:="=x*", Operator:=xlAnd Set rng = Range(("C2"), Range("C2000")).SpecialCells(xlCellTypeVisible) If Err.Number = 1004 Then MsgBox ("nessun risultato per il filtro") Resume Else Selection.AutoFilter Field:=4, Criteria1:="=n*" Range("A6:b2000").SpecialCells(xlCellTypeVisible).Copy Sheets("Foglio5").Select Range("S6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Giovanni").Select Range("f6:g2000").SpecialCells(xlCellTypeVisible).Copy Sheets("Foglio5").Select Range("t6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If End Sub saluti Giap
|
|
Rank: Newbie
Iscritto dal : 2/7/2011 Posts: 9
|
Grazie Giap, con qualche modifica la macro funziona ma la cosa stranissima che inserendo Range("A6:b2000").SpecialCells(xlCellTypeVisible).Copy la folmula se non trova il valore cancella l'origine, ho dovuto mettere la stringa intera Selection.SpecialCells(xlCellTypeVisible).Select altra stranezza se non trova il valore incolla tutti i dati, comunque ho risolto il problema. Grazie mille per la tua pazienza, solo così sono riuscito a far funzionare di nuovo il programma. Michele
|
|
Guest |