Ciao scusa se rispondo in ritardo ma avevo il computer in riparazione, l'esempio che mi hai mandato rispecchia preciso quello che devo fare cioè bloccare le cifre blù quando devo camcellare i numeri su un'altro foglio (le cifre
blù sono all'occorrenza risultati di somme fatti sull'altro foglio), se puoi mandami una piccola guida su come fare sia il bottone che la procedura.
Grazie in anticipo ciao.
Ciao,
questa è una di quelle operazioni che è più facile a farsi che a spiegarsi, però
prima di iniziare, fai una copia del file e lavora su quest'ultima, visto e considerato che se non sono svolte correttamente tutte le operazioni potresti correre il rischio di riscriverti tutte le formule.
Per la creazione del 'bottone', che, però, non è un bottone bensì un interruttore ActiveX, vedi
questa panoramica
dei controlli disponibili, mentre qui come
inserire un nuovo controllo, in alternativa puoi copiare il controllo dal mio file.
Come avrai notato, la riga 30 del mio esempio contiene una copia delle formule che utilizzo nelle righe 2:21 del mio esempio. Definisci anche tu una riga che contiene tutte le formule e che sarà utilizzata per ripristinarle nell'intervallo originario,
per funzionare correttamente è indispensabile che le formule siano trascinabili (se nella riga 30 del mio esempio, nelle colonne A:D, copi i valori contenuti un una qualsiasi delle precedenti righe, devi ottenere gli stessi risultati delle formule di
quella riga).
Ora, interveniamo sul codice vba, tasto destro sull'interruttore e quindi visualizza codice, dovresti trovarti qualcosa del tipo:
Private Sub ToggleButton1_Click()
End Sub
tra queste due righe incolla le seguenti:
Dim rTemplate As Range, rTarget As Range, cel As Range
With ActiveSheet
'--- definisce l'intervallo della riga template con le formule originali
Set rTemplate = .Range("E30:N30")
'--- definisce l'intervallo contenente le formule da sostituire con i valori e viceversa
Set rTarget = .Range("E2:N21")
End With
Application.ScreenUpdating = False
Set cel = ActiveCell
With ToggleButton1
If ToggleButton1.Value = True Then
.BackColor = vbGreen
.Caption = "Mostra Formule"
rTarget.Copy
rTarget.PasteSpecial xlPasteValues
Else
.BackColor = vbYellow
.Caption = "Mostra Valori"
rTemplate.Copy
rTarget.PasteSpecial xlPasteFormulas
End If
End With
cel.Activate
Application.CutCopyMode = False
Set rTemplate = Nothing
Set rTarget = Nothing
Set cel = Nothing
L'ultimo intervento che devi fare è modificare le righe in grassetto, al posto di E30:N30 dovrai indicare il tuo range contenente le formule da utilizzarsi per il ripristino, mentre al posto di E2:N21 dovrai
indicare l'intervallo che contiene le formule da bloccare o ripristinare.
Buon lavoro,
Andrea.