La formattazione condizionale può essere impostata in modo non corretto quando si usa VBA in Excel

Sintomi

Considerate il seguente scenario:

  • Selezionare una cella in un foglio di lavoro in Microsoft Excel 2000 o in una versione successiva di Excel.
  • Si usa Microsoft Visual Basic, Applications Edition (VBA) per creare un programma di formattazione condizionale basato su formule.
  • Si usano riferimenti di cella relativi nel programma di formattazione condizionale VBA.
  • La formattazione condizionale viene applicata a una cella diversa dalla cella selezionata.

Quando si applica la formattazione condizionale, si nota che la formattazione condizionale non è impostata correttamente.

Questo problema si verifica ad esempio quando si usa un programma che include codice VBA in un foglio di lavoro di Excel simile al codice seguente:

Sub Example()
ThisWorkbook.Worksheets(1).Range("A1").Select
With ThisWorkbook.Worksheets(1).Range("B1")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=A1=1"
.FormatConditions(1).Interior.ColorIndex = 46
End With
End Sub

Questo codice applica automaticamente la formattazione condizionale alla cella B1 quando si immette "1" nella cella A1. Quando si immette "1" nella cella A1, si prevede che il colore della cella B1 cambi in rosso. Tuttavia, il colore della cella non cambia. Il colore della cella B1 diventa rosso solo se si immette "1" nella cella B1.

Inoltre, nella finestra di dialogo Formattazione condizionale la formula viene visualizzata come =B1=1 anziché =A1=1.

Soluzione alternativa

Per ovviare a questo problema, utilizzare uno dei seguenti metodi:

Metodo 1: Usare riferimenti di cella assoluti

È possibile utilizzare riferimenti di cella assoluti per fare riferimento alla cella che contiene la formula anziché per fare riferimento ai riferimenti di cella relativi.

Ad esempio, è possibile modificare la voce di testo Formula1:="=A1=1" nel codice VBA descritto nella sezione "Sintomi" come Formula1:="=$A$1=1" per fare in modo che il codice usi riferimenti di cella assoluti. Questa versione modificata del codice VBA è la seguente:

Sub Example()

ThisWorkbook.Worksheets(1).Range("A1").Select

With ThisWorkbook.Worksheets(1).Range("B1")
     .FormatConditions.Delete
     .FormatConditions.Add Type:=xlExpression, Formula1:="=$A$1=1"
     .FormatConditions(1).Interior.ColorIndex = 46
End With

End Sub

Metodo 2: selezionare la cella da usare per la formattazione condizionale prima di applicare la formula

Quando si desidera applicare la formattazione condizionale a una cella, selezionare prima di tutto la cella da usare per la formattazione condizionale. Selezionare quindi la cella da usare per la formula. Dopo aver selezionato questa cella, modificare la formula in base alle esigenze.

A tale scopo, seguire questa procedura, come appropriato per la versione di Excel in esecuzione.

Microsoft Office Excel 2007

  1. Avviare Excel e quindi aprire un nuovo foglio di lavoro di Excel.
  2. Nel foglio di lavoro di Excel selezionare la cella B1.
  3. Fare clic sulla scheda Home .
  4. Fare clic su Formattazione condizionale nel gruppo Stili e quindi su Nuova regola.
  5. Fare clic su Usa una formula per determinare le celle da formattare in Selezionare un tipo di regola.
  6. Fare clic all'interno della casella Formato valori in cui la formula è vera . Selezionare quindi la cella da usare per la formattazione condizionale.
  7. Modificare il valore nel passaggio 6 in modo che sia =$A$1=1.
  8. Fare clic su Formato.
  9. Nella finestra di dialogo Formato celle fare clic sulla scheda Riempimento .
  10. Fare clic sul colore "rosso" e quindi su OK.
  11. Nella finestra di dialogo Nuova regola di formattazione fare clic su OK.
  12. Nella cella A1 digitare 1 e quindi premere INVIO.
  13. Verificare che il colore della cella B1 sia stato modificato in rosso.
  14. Chiudere il foglio di lavoro di Excel.

Microsoft Office Excel 2003 e versioni precedenti di Excel

  1. Avviare Excel e quindi aprire un nuovo foglio di lavoro di Excel.
  2. Nel foglio di lavoro di Excel selezionare la cella B1.
  3. Scegliere Formattazione condizionale dal menu Formato.
  4. In Condizione 1 fare clic su Formula è nell'elenco.
  5. Fare clic all'interno della casella di immissione dati. Selezionare quindi la cella da usare per la formattazione condizionale.
  6. Modificare il valore nella casella di immissione dati in modo che sia =$A$1=1 e quindi fare clic su OK.
  7. Fare clic su Formato.
  8. Nella finestra di dialogo Formato celle fare clic sulla scheda Modelli .
  9. Selezionare il colore "rosso" e quindi fare clic su OK.
  10. Nella finestra di dialogo Formattazione condizionale fare clic su OK.
  11. Nella cella A1 digitare 1 e quindi premere INVIO.
  12. Verificare che il colore della cella B1 sia stato modificato in rosso.
  13. Chiudere il foglio di lavoro di Excel.