Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
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)