Funkcja VBA SpecialCells(xlCellTypeBlanks) nie działa zgodnie z oczekiwaniami w programie Excel

Symptomy

Podczas tworzenia makra usługi Microsoft Visual Basic for Applications (VBA), które wybiera wiele nieciągłych zakresów w skoroszycie programu Microsoft Excel, które używa wyrażenia VBA podobnego do następującego, akcje, które miały wystąpić tylko w przypadku komórek nieciągłych, występują w każdej komórce w oryginalnym zaznaczeniu arkusza:

expression.SpecialCells(XlCellType).expression XlCellType

Może to być dowolny z następujących elementów:

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

Przyczyna

To zachowanie występuje, jeśli wybierzesz więcej niż 8192 nieciągłych komórek za pomocą makra. Program Excel obsługuje tylko maksymalnie 8192 nieciągłych komórek za pośrednictwem makr VBA.

Zazwyczaj jeśli spróbujesz ręcznie wybrać więcej niż 8192 nieciągłych komórek, zostanie wyświetlony następujący komunikat o błędzie:

Wybór jest zbyt duży.

Jednak w przypadku korzystania z makra VBA w celu dokonania tego samego lub podobnego wyboru nie zostanie zgłoszony żaden komunikat o błędzie i nie zostanie wygenerowany żaden kod błędu, który można przechwycić za pośrednictwem procedury obsługi błędów.

Obejście problemu

Aby obejść to zachowanie, możesz utworzyć strukturę pętli w makrach VBA, która obsługuje mniej niż maksymalnie 8192 komórki.

Stan

Takie działanie jest celowe.