Formattazione condizionale di intervalli di sovrapposizione in Excel 2007 VBA – bug?

Attualmente cerca di contribuire a questa domanda – ma si è imbattuto in un problema molto strano:

Quando si tenta di aggiungere formattazione condizionale a intervalli di sovrapposizione (in VBA), Excel 2007 genera errori di errore 1004 o errore 9 (indice fuori field). Sono riuscito a bollire il codice errato fino a questo:

 Sub Produce1004 ()
     Cells.FormatConditions.Delete
     Range ("A1") FormatConditions.Add Tipo: = xlExpression, Formula1: = "= 1"
     Range ("A1: A2") FormatConditions.Add Tipo: = xlExpression, Formula1: = "= 1"
     Range ("A1: A2") FormatConditions (Range ("A1: A2") FormatConditions.Count) .Font.ColorIndex = 7
 End Sub

 Sub ProduceError9 ()
     Cells.FormatConditions.Delete
     Range ("A1: A3") FormatConditions.Add Tipo: = 2, Formula1: = "= 1"
     Range ("A1: A2") FormatConditions.Add Tipo: = 2, Formula1: = "= 1"
     Range ("A1: A2") FormatConditions.Add Tipo: = 2, Formula1: = "= 1"
     Range ("A1: A2") FormatConditions (intervallo ("A1: A2") FormatConditions.Count) .Font.ColorIndex = 3
 End Sub

È l'ultima row in entrambi i sottostanti che provoca l'errore. L'errore si verifica solo in Excel 2007, funziona bene nel 2010.

Qualcuno sa una soluzione?

Posso vedere un problema in Produce1004 ():

A1 ha 2 condizioni di formato e A2 ha 1 condizione di formato.

Range ("A1: A2"). FormatConditions.Count fornisce il count per A1, FormatConditions (2) non esiste per A2, quindi l'errore.

Ma per ProduceError9 () il numero di condizioni di formato è lo stesso per A1 e A2.

Con una piccola sperimentazione, posso spiegare questo deducendo che l'intervallo è memorizzato con la condizione di formato (impostando il font per [A1] .FormatCondition (3) anche fallisce). È necessario modificare il formato per l'intervallo per cui è stata definita la condizione di formato.

Presumibilmente, Excel 2010 migliora questa situazione dividendo una condizione di formato in volo.