Cancellazione valori
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Una macro che usiamo spesso: serve a cancellare da un foglio tutti i valori delle celle non protette. Permette di creare uno schema con alcuni valori da inserire, inserire valori di prova e quindi cancellarli tutti con un solo comando.

Nella versione piú semplice la macro può essere scritta così:
Sub PulisciFoglio()
   Application.Calculation = xlCalculationManual

   Set F = ActiveSheet
   Set Ur = F.UsedRange

   For Each Cella In Ur
     If Not (Cella.Locked) Then
        Cella.Select
        Cella.ClearContents
     End If
   Next Cella

   Application.Calculation = xlCalculationAutomatic
End Sub

Una versione più sofisticata può includere il controllo che le celle non protette non siano delle formule ed evitare errore nel caso alcune delle celle siano unite attraverso la proprietà MergeArea.
Sub PulisciFoglio()
  Application.Calculation = xlCalculationManual
  
  Set F = ActiveSheet
  Set Ur = F.UsedRange
 
  For Each Cella In Ur
    If Not (Cella.Locked) And Not (Cella.HasFormula) Then
        Cella.Select
        Cella.MergeArea.ClearContents
    End If
  Next Cella
  
  Application.Calculation = xlCalculationAutomatic
End Sub

La versione che usiamo spesso effettua anche un controllo per verificare che le formule inserite siano effettivamente fra celle: nella versione precedente infatti se fosse stato immesso un valore nella forma =1+1 e questo non sarebbe stato cancellato. La procedura rimuove anche eventuali commenti nelle celle cancellate.
Sub PulisciFoglio()
  Application.Calculation = xlCalculationManual
  
  Set F = ActiveSheet
  Set Ur = F.UsedRange
     
  For Each Cella In Ur
    If Not (Cella.Locked) Then
      Cella.Select
      FCella = LCase(Cella.Formula)
      
      If (FCella.HasFormula) Then
        i = 1
        While (i < Len(FCella) And Not ("a" <= Mid(FCella, i, 1) And Mid(FCella, i, 1) <= "z"))
          i = i + 1
        Wend
        EFormula = (i < Len(FCella))
      Else
        EFormula = False
      End If
           
      If Not (EFormula) Then
        Cella.MergeArea.ClearContents
        Cella.MergeArea.ClearComments
      End If

    End If
  Next Cella
  
  Application.Calculation = xlCalculationAutomatic
End Sub
 

data4idea srls - PIva 01881000937 - info@data4idea.it