Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Aiuto per correzione Macro

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

[Excel] Aiuto per correzione Macro

Postdi marte1503 » 14/05/11 14:14

Ciao a tutti.
Nel mio programmino ho creato questa macro, ha la funzione di eliminare a ogni attivazione la prima riga della Tabella2 (intervallo Tabella B19:B40), e quando arriva alla riga del totale interrompe l’eliminazione di righe.
Tutto funziona bene se la tabella non è filtrata, ma se ho già attivato un filtro e erroneamente premo il pulsante per attivare la macro, mi dà un errore di debug dicendo che non è possibile spostare celle in una tabella o in un intervallo filtrato.
Qual è l’istruzione per evitare che questo errore di debug si verifichi?
In poche parole ho bisogno che se la tabella è filtrata la macro resti disattiva.
Grazie per l’attenzione

Application.ScreenUpdating = False
ActiveSheet.Unprotect
If Cells(20, 5) = "" Then Exit Sub
Range("B20:F20").Select
Selection.ListObject.ListRows(1).Delete
Range("B17").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Sponsor
 

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 14/05/11 14:34

RETTIFICO: L'intervallo di Tabella2 è B19:F40
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 14/05/11 15:16

Ciao,
inserisci, dopo di
Codice: Seleziona tutto
ActiveSheet.Unprotect


il seguente codice
Codice: Seleziona tutto
    If Not AutoFilterMode Then
        Selection.AutoFilter Field:=1, Criteria1:="<>"
        ActiveSheet.ShowAllData
    End If
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 14/05/11 15:45

Ciao Ricky, grazie per l'aiuto.
Ho fatto come dicevi:

Application.ScreenUpdating = False
ActiveSheet.Unprotect
If Not AutoFilterMode Then
Selection.AutoFilter Field:=1, Criteria1:="<>"
ActiveSheet.ShowAllData
End If
If Cells(20, 5) = "" Then Exit Sub
Range("B20:F20").Select
Selection.ListObject.ListRows(1).Delete
Range("B17").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub

Continua a darmi l'errore e mi evidenzia in giallo la riga

Selection.ListObject.ListRows(1).Delete

Che devo fare?
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 14/05/11 16:20

Ciao,
avevo solo letto il problema del filtro e non avevo guardato, con la dovuta attenzione, le istruzioni che utilizzi.

Il tuo intento è cancellare, ad ogni esecuzione della macro, la riga "20" se la cella "E20" è vuota?

Puoi utilizzare i TAG specifici per il codice: pulsante "Code" posto sopra la finestra in cui si scrivono i messaggi: la leggibilità del codice aumenta, inoltre è possibile copiarlo facilmente.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 14/05/11 18:11

Ok, terrò presente per i prossimi invii.

Cmq, sì; la macro mi serve per eliminare la riga 20 ad ogni esecuzione, ma l'eliminazione viene bloccata con il comando
Codice: Seleziona tutto
 If Cells(20, 5) = "" Then Exit Sub
, quando per le ripetute attivazioni la tabella si riduce ad una sola riga, e questa stessa riga si svuota di dati (ho messo il controllo su F20 (non so se questa soluzione sia la più corretta, l’avevo creata da solo tutto soddisfatto per non aver chiesto un aiuto..) mi serviva per evitare che terminate le righe da eliminare nella tabella, si aprisse la finestra del debug…)
Spero di averti fatto capire la mia intenzione..
grazie
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 14/05/11 23:14

Ciao,
ecco il codice corretto
Codice: Seleziona tutto
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect
    If Not AutoFilterMode Then
        Selection.AutoFilter Field:=1, Criteria1:="<>"
        ActiveSheet.ShowAllData
    End If
    If Cells(20, 5) = "" Then Exit Sub
    Rows("20").Delete
    Range("B17").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.ScreenUpdating = True


Si, arrivare da soli al risultato è molto gratificante ma con quanto tempo e fatica si arriva al risultato e poi se non si hanno sufficienti cognizioni di programmazione si rischia di complicarsi la vita.
I forum hanno questo e tanti altri scopi...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 15/05/11 00:48

..Ricky, provo solo ora il tuo codice.

Ho notato che attivando la macro con la tabella filtrata, l'errore di debug non si verifica più, ma l'eliminazione della riga20 avviene lo stesso, infatti escludendo i filtri dalla tabella e riportandola alla normalità, noto che mancano tante righe quante le volte che ho attivato la macro.

Attendo nuovo help
grazie
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 15/05/11 00:53

Ciao,
ma eliminare la riga "20", ad ogni esecuzione della macro, non era la tua esigenza ???

La macro termina l'elaborazione quando
Codice: Seleziona tutto
If Cells(20, 5) = "" Then Exit Sub
è verificata ossia quando la cella "E20" è VUOTA
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 15/05/11 01:21

No, come ho scritto nel primo post, la mia esigenza sarebbe quella che nel caso in cui la tabella fosse filtrata, la macro dovrebbe rimanere inattiva, e lavorare, o meglio, eliminare la riga20 solo se la tabella non è filtrata.
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 15/05/11 01:32

Ciao,
cosa intendi per "tabella non Filtrata"

che il filtro sia attivato e siano state impostate delle condizioni di filtratura ?

In caso di risposta "SI" alla domanda allora devi modificare il seguente codice
Codice: Seleziona tutto
    If Not AutoFilterMode Then
        Selection.AutoFilter Field:=1, Criteria1:="<>"
        ActiveSheet.ShowAllData
    End If


in
Codice: Seleziona tutto
    If Not AutoFilterMode Then
        Exit Sub
    End If
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 15/05/11 01:44

Ricky, grazie per la pazienza malgrado l'orario, ora è perfetta!!

Grazie davvero!
Paolo
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 15/05/11 01:47

Ciao,
di nulla.
Faccio spesso tardi ... è il mio modo di distrarmi.

Buon proseguimento ed alla prossima.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 15/05/11 01:59

…Cavolo Ricky, non ho controllato bene… :oops:
Ora ho un nuovo problema: dopo l’ultima modifica la macro non elimina la riga 20 in nessun caso, cioè nemmeno quando la tabella non è filtrata.

<<Per tabella non filtrata intendo dire che in nessuna delle 5 colonne ho utilizzato filtri>>

Se pensi che non mi sia spiegato bene, facciamo così: andiamo a nanna, ci dormo sopra e domani rifaccio la domanda.
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 15/05/11 02:05

Ciao,
mi ero accorto della cosa.
L'ora tarda fa commettere errori.

Eccola correzione:
Codice: Seleziona tutto
    If Sheets("nome del foglio sul quale lavori").AutoFilterMode Then
        Exit Sub
    End If
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 15/05/11 07:38

...Buongiorno Ricky, e buona domenica.

Ho modificato il codice, ora è così:

Codice: Seleziona tutto
Application.ScreenUpdating = False
    ActiveSheet.Unprotect
        If Sheets("Foglio8").AutoFilterMode Then
        Exit Sub
    End If
    If Cells(20, 5) = "" Then Exit Sub
    Rows("20").Delete
    Range("B17").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.ScreenUpdating = True

End Sub


C'è ancora qualcosa che non va,
l'eliminazione della riga continua ad avvenire sia nel caso di tabella non filtrata(giusto come dovrebbe essere) ma anche nel caso di tabella filtrata, così non mi va bene..

Ti rispondo appena posso, devo uscire per un lavoro..

Grazie per il nuovo impegno!
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 15/05/11 15:10

Ciao,
la notte è fatta per dormire e non per tentare di risolvere dei quesiti fornendo soluzioni parziali !!! (Ti ho fornito una soluzione non completa)
Condividi ?

E' il pomeriggio di una domenica uggiosa ... e quindi mi sono messo a guardare il tuo quesito e .. prova questa macro
Codice: Seleziona tutto
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect
    If Sheets("Foglio8").AutoFilterMode Then
        Ur = Range("A" & Rows.Count).End(xlUp).Row
        For I = 2 To Ur
            If Rows(I).EntireRow.Hidden = True Then
                MsgBox "Filtro attivo ed impostato" & vbCrLf & "Elaborazione Interrotta", vbCritical
                Exit Sub
            End If
        Next I
    End If
    If Cells(20, 5) = "" Then Exit Sub
    Rows("20").Delete
    Range("B17").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.ScreenUpdating = True
    MsgBox "Effettuata cancellazione della riga '20'"
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Aiuto per correzione Macro

Postdi marte1503 » 15/05/11 20:36

Gentilissimo!
Oggi invece su Como splendeva il sole, ne ho approfittato e riesco ora a risponderti.

La tua macro è uno spettacolo, la finestrella di avviso è più di quanto sperassi!!
..Tuttavia rimane ancora l’inghippo, ho smanettato un po’ ma il tuo codice per me è incomprensibile, non sono in grado di correggerlo e ti chiedo ancora un pochino di pazienza..

Il problema è lo stesso di ieri, piuttosto che rimanere inattiva, la macro elimina la Riga20 anche quando la tabella è filtrata.

Quando hai voglia…
Grazie
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Aiuto per correzione Macro

Postdi Avatar3 » 15/05/11 22:03

Scusate se mi intrometto ma mi sembra di capire che se il foglio è filtrato la macro non deve funzionare
a questo punto è sufficiente commentare qualche riga di codice della macro postata da Ricky

Codice: Seleziona tutto
   Sub EliminaSeNF()
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect
    If Sheets("Foglio8").AutoFilterMode Then
        'Ur = Range("A" & Rows.Count).End(xlUp).Row
        'For I = 2 To Ur
          '  If Rows(I).EntireRow.Hidden = True Then
                MsgBox "Filtro attivo ed impostato" & vbCrLf & "Elaborazione Interrotta", vbCritical
                Exit Sub
           ' End If
       ' Next I
    End If
    If Cells(20, 5) = "" Then Exit Sub
    Rows("20").Delete
    Range("B17").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.ScreenUpdating = True
    MsgBox "Effettuata cancellazione della riga '20'"
   End Sub


(Righe che possono essere eliminate)
Oppure ho intepretato male il quesito?

Ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: [Excel] Aiuto per correzione Macro

Postdi ricky53 » 15/05/11 23:51

Ciao Marte,
a questo punto non saprei cosa fare di più se non chiederti un file di esempio !!!

Io ho fatto le prove su un file che ho costruito interpretandoquantotu aveviscritto ... quindi ho lavorato su una situazione che potrebbe essere diversa dalla tua ... è meglio vedere il tuo file e troveremo sicuramente la soluzione.

Avatar:
No. Le righe che tu hai tolto ccorrono perchè ... leggi gli interventi della notte prima e ... provando vedrai che
"If Sheets("Foglio8").AutoFilterMode Then"
da solo non basta.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Aiuto per correzione Macro":


Chi c’è in linea

Visitano il forum: Marius44, raimea e 17 ospiti