MACRO CANCELLARE CELLE DA PIU FOGLI EXCEL

Anonimo
2024-04-04T12:14:19+00:00

Buon pomeriggio

ho un problema con la macro seguente, in pratica riesco a cancellare i dati contenuti nelle celle si un determinato range solamente nel primo foglio.

non riesco ad aggiungere piu fogli.

il range di celle é sempre lo stesso, soalmente vorrei applicarlo a piú fogli.

non sono pratico di macro e vorrei un vostro aiuto:

Public Sub Cancella()

Dim WB As Workbook 

Dim SH As Worksheet 

Dim Rng As Range, rCell As Range 

Dim lng As Long 

Dim lRisposta As Long 

Set WB = ThisWorkbook 

Set SH = WB.Sheets("Januar")  **<==== SE AGGIUNGO ALTRI FOGLI RICEVO UN ERRORE**

Set Rng = SH.Range("D2:D32,E2:E32")  **<==== RANGE OK**

lRisposta = MsgBox(Prompt:="CANCELLARE DEFINITIVAMENTE I DATI? ", \_ 

                   Title:="Attenzione!", \_ 

                   Buttons:=vbYesNoCancel + vbQuestion) 

If lRisposta = vbYes Then

    For Each rCell In Rng.Cells 

        With rCell 

            If IsNumeric(.Value) \_ 

            Or .NumberFormat = "" \_ 

            Or .NumberFormat = "" \_ 

            Or .Value = "" \_ 

            Or .Value = "" Then 

                '\\ Do nothing! 

            Else 

                .ClearContents 

            End If 

        End With 

    Next rCell 

End If 

End Sub

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

Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
2024-04-04T13:50:12+00:00

Io semplificherei:

Public Sub Cancella()

Dim rngCells As Range, rngCell As Range 

Dim intA As Integer, arrS 

    If MsgBox("CANCELLARE DEFINITIVAMENTE I DATI? ", vbYesNoCancel + vbQuestion, "Attenzione!") = vbYes Then 

        arrS = [{"Januar", "Februar"}] 

        For intA = 1 To UBound(arrS) 

            Set rngCells = Worksheets(arrS(intA)).Range("D2:D32,E2:E32") 

            For Each rngCell In rngCells 

                With rngCell 

                    If Not IsNumeric(.Value) Then 

                        .ClearContents 

                    End If 

                End With 

            Next rngCell 

        Next intA 

    End If 

End Sub

nell'array arrS aggiungi tutti i nomi dei fogli che vuoi esaminare,

ciao.

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2024-04-04T14:17:59+00:00

    ti ringrazio, funziona alla perfezione!!!

    Grazie a te del riscontro, ricorda di chiudere la discussione contrassegnando la risposta con il codice,

    ciao.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2024-04-04T14:34:27+00:00

    Ho tolto il contrassegno, il post con il codice è l'altro,

    grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-04-04T14:17:05+00:00

    ti ringrazio, funziona alla perfezione!!!

    La risposta è stata utile?

    0 commenti Nessun commento