A função VBA SpecialCells(xlCellTypeBlanks) não funciona conforme esperado no Excel

Sintomas

Quando cria uma macro do Microsoft Visual Basic for Applications (VBA) que seleciona múltiplos intervalos não contíguos num livro do Microsoft Excel que utiliza uma expressão VBA semelhante à seguinte, ocorrem ações que só deveriam ocorrer com células não contíguas a todas as células na seleção original na folha de cálculo:

expression.SpecialCells(XlCellType).expression XlCellType

pode ser qualquer um dos seguintes:

  • xlCellTypeAllFormatConditions
  • xlCellTypeAllValidation
  • xlCellTypeBlanks
  • xlCellTypeComments
  • xlCellTypeConstants
  • xlCellTypeFormulas
  • xlCellTypeSameFormatConditions
  • xlCellTypeSameValidation
  • xlCellTypeVisible

Causa

Este comportamento ocorre se selecionar mais de 8192 células não contíguas com a macro. O Excel só suporta um máximo de 8192 células não contíguas através de macros VBA.

Normalmente, se tentar selecionar manualmente mais de 8192 células não contíguas, receberá a seguinte mensagem de erro:

A seleção é demasiado grande.

No entanto, quando utiliza uma macro VBA para fazer a mesma seleção ou uma seleção semelhante, não é gerada nenhuma mensagem de erro e não é gerado nenhum código de erro que possa ser capturado através de um processador de erros.

Solução

Para contornar este comportamento, poderá querer criar uma estrutura de ciclo na macro VBA que processe menos do que as 8192 células máximas.

Estado

Este comportamento é por concepção.