Cancellazione righe con macro

Anonimo
2011-01-14T15:49:20+00:00

Buona sera a tutti,

Mi trovo in questa situazione: ho questa macro che dovrebbe cancellare le righe dalla 4 alla 100 dei fogli 2 3 e 4. INVECE mi cancella i dati del foglio 1. Qualcuno può spiegarmi dove sto sbagliando?

Public Sub Cancella()

'dichiaro le variabili

    Dim sh2 As Worksheet

    Dim sh3 As Worksheet

    Dim sh4 As Worksheet

'metto un riferimento ai fogli

With ThisWorkbook

    Set sh2 = .Worksheets("Caltiber")

    Set sh3 = .Worksheets("Nicofer")

    Set sh4 = .Worksheets("Garbin")

End With

'skrolling del monitor

Application.ScreenUpdating = False

        With sh2

           Range("A4:AA100").Select

           Selection.Delete Shift:=xlUp

        End With

        With sh3

           Range("A4:AA100").Select

           Selection.Delete Shift:=xlUp

        End With

        With sh4

           Range("A4:AA100").Select

           Selection.Delete Shift:=xlUp

        End With

'ripristino l'aggiornamento del monitor

Application.ScreenUpdating = True

'Set a Nothing delle variabili oggetto

Set sh2 = Nothing

Set sh3 = Nothing

Set sh4 = Nothing

End Sub

Grazie infinite per qualsiasi suggerimento

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-01-14T16:01:54+00:00

Buona sera a tutti,

Mi trovo in questa situazione: ho questa macro che dovrebbe cancellare le righe dalla 4 alla 100 dei fogli 2 3 e 4. INVECE mi cancella i dati del foglio 1. Qualcuno può spiegarmi dove sto sbagliando?

Public Sub Cancella()

'dichiaro le variabili

    Dim sh2 As Worksheet

    Dim sh3 As Worksheet

    Dim sh4 As Worksheet

      

'metto un riferimento ai fogli

With ThisWorkbook

    Set sh2 = .Worksheets("Caltiber")

    Set sh3 = .Worksheets("Nicofer")

    Set sh4 = .Worksheets("Garbin")

End With

'skrolling del monitor

Application.ScreenUpdating = False

   

        With sh2

           Range("A4:AA100").Select

           Selection.Delete Shift:=xlUp

        End With

        With sh3

           Range("A4:AA100").Select

           Selection.Delete Shift:=xlUp

        End With

        With sh4

           Range("A4:AA100").Select

           Selection.Delete Shift:=xlUp

        End With

  

   

'ripristino l'aggiornamento del monitor

Application.ScreenUpdating = True

'Set a Nothing delle variabili oggetto

Set sh2 = Nothing

Set sh3 = Nothing

Set sh4 = Nothing

   

End Sub

Grazie infinite per qualsiasi suggerimento

Se non metti il punto prima di Range all'interno degli With, prende il Range foglio attivo(probailmente il Foglio1). Eliminare, non cancellare, giusto? Inoltre tu non elimini *tutta le righe*, ma solo le celle da A4 ad AA100. Semplificando:

Public Sub m()

    Dim sh As Worksheet

    Application.ScreenUpdating = False

    For Each sh In Worksheets(Array("Foglio1", "Foglio2", "Foglio3"))

        sh.Range("A4:A100").Delete Shift:=xlUp

    Next

    Application.ScreenUpdating = True

    Set sh = Nothing

End Sub

Cambia i nomi dei fogli con i tuoi.


--

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)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2011-01-14T16:06:38+00:00

    Grazie mille Mauro

    Buon fine settimana

    La risposta è stata utile?

    0 commenti Nessun commento