VBA-funktionen SpecialCells(xlCellTypeBlanks) fungerar inte som förväntat i Excel

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Symptom

När du skapar ett Microsoft Visual Basic for Applications-makro (VBA) som markerar flera icke angränsande områden i en Microsoft Excel-arbetsbok som använder ett VBA-uttryck som liknar följande, inträffar åtgärder som bara ska inträffa med icke angränsande celler till varje cell i det ursprungliga markeringen i kalkylbladet:

expression.SpecialCells(XlCellType).expression XlCellType

kan vara något av följande:

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

Orsak

Detta inträffar om du markerar fler än 8 192 icke angränsande celler med makrot. Excel stöder endast högst 8 192 icke angränsande celler via VBA-makron.

Vanligtvis visas följande felmeddelande om du försöker markera fler än 8 192 icke angränsande celler manuellt:

Markeringen är för stor.

Men när du använder ett VBA-makro för att göra samma eller ett liknande val utlöses inget felmeddelande och ingen felkod skapas som kan fångas via en felhanterare.

Lösning

Du kan komma runt det här beteendet genom att skapa en loopande struktur i VBA-makrot som hanterar mindre än de högst 8 192 cellerna.

Status

Detta är avsiktligt.