Protezione della formattazione condizionale (Microsoft Excel)
Kees ha un foglio di lavoro che utilizza ampiamente la formattazione condizionale.
Tuttavia, la formattazione condizionale continua a essere incasinata quando gli utenti copiano e incollano le informazioni o quando utilizzano il trascinamento della selezione per modificare il foglio di lavoro. Si chiede quale sia il modo migliore per evitare che ciò accada.
Ciò accade perché la formattazione condizionale è considerata proprio questo: la formattazione. Un copia e incolla standard (o una modifica con trascinamento della selezione)
copia tutto, inclusa la formattazione. Ciò significa che le celle di destinazione avranno la formattazione delle celle di origine, non la formattazione delle celle di destinazione (inclusa qualsiasi formattazione condizionale che potrebbe essere stata nelle celle di destinazione).
La risposta, quindi, è dire agli utenti di non fare un copia e incolla standard.
Invece, dovrebbero usare le opzioni Incolla per incollare qualsiasi cosa (o tutto) tranne la formattazione.
Un’altra opzione, ovviamente, è proteggere il foglio di lavoro in modo che l’utente non possa copiare e incollare nulla. Ciò potrebbe essere un po ‘drastico per i tuoi utenti, tuttavia, poiché potresti volere che apportino modifiche. (Non vuoi che rovinino la formattazione condizionale.)
Questo porta a un approccio macro. Se è possibile registrare una macro che applica la formattazione condizionale alle celle, è possibile creare alcune macro aggiuntive che applicano quella macro registrata, se necessario. Ad esempio, supponiamo che la macro che registri sia chiamata qualcosa di breve e sexy come SetCondFormat.
Successivamente, vai in Visual Basic Editor e, nella finestra immediata, inserisci quanto segue:
? Cells.SpecialCells(xlCellTypeAllFormatConditions).Address
Supponendo che tu abbia impostato la formattazione condizionale, dovrebbe restituire una riga, forse una riga lunga, che mostra gli indirizzi delle celle e degli intervalli che utilizzano la formattazione condizionale. Assomiglierà a questo:
$B$3:$B$50,$D$3:$D$50,$G$3:$I$20
Successivamente, aggiungi la seguente macro al modulo di codice ThisWorksheet:
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Const cCFAddress = "$B$3:$B$50,$D$3:$D$50,$G$3:$I$20" On Error Resume Next Set r = Range(cCFAddress) On Error GoTo 0 If r IsNot Nothing Then If Application.Intersect(Target, r) IsNot Nothing Then SetCondFormat End If End If End Sub
La chiave qui è assicurarsi che la costante cCFAddress sia impostata uguale a ciò che è stato restituito quando hai visto gli indirizzi nella finestra Immediata. (Se modifichi la formattazione condizionale in un secondo momento, puoi usare di nuovo il trucco della finestra immediata e cambiare semplicemente la riga nella macro sopra.)
La macro viene eseguita ogni volta che c’è una modifica nel foglio di lavoro. Verifica se l’indirizzo modificato (passato nella variabile Target) fa parte delle celle originali che contenevano formati condizionali. In tal caso, il tuo SetCondFormat (quello che hai registrato per eseguire la formattazione condizionale) viene nuovamente eseguito.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (4362) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.