Valor incorrecto al contar celdas en diferentes versiones de Excel

He visto que algunos usuarios de SO se encuentran con un problema al intentar usar alguna variación deCells.Count; el código VBA produce un error de desbordamiento en algunos casos.

Para referencia, ver comentarios enesta respuesta:

Creo que esto funcionará, pero recibo un error de "desbordamiento" y me señala el código "Si Master.Cells.SpecialCells (xlCellTypeVisible) .Count> 0 Then" --- parece que no está filtrando nada en particular - usuario1556069

yesta respuesta:

¿Funciona este onilo (y Cells.Count no funcionó) porque este último usó un número entero, 16 bits, valor máximo de 65,536 y la hoja de cálculo completa devolvió un número mayor? - fast_code

Supongo que en algún lugar entre bastidores, VBA está tratando de forzar el recuento de células a un entero entero pequeño (16 bits) o entero largo (32 bits). El recuento de celdas de una hoja de cálculo de Excel 2007 desbordaría ambos tipos de datos. Lamentablemente, no puedo aislarlo ahora porque no tengo una copia de Excel 2007 a mano y no puedo reproducir su error. - mwolfe02

Tratando de entender esto, traté de reproducirme y tuve un desbordamiento al tratar de asignarCells.Count como un entero Esto tiene sentido ya que el valor es demasiado grande para el tipo de datos Integer.

Al usar el código a continuación, tanto en Excel 2003 como en 2010, me dieron un resultado numérico al tratar de asignarlo como Largo o Variante.

Option Explicit

Sub testInteger()
    Dim i As Integer
    i = Cells.Count 'Overflow
    Debug.Print i 'Doesn't get this far...
End Sub

Sub testLong()
    Dim l As Long
    l = Cells.Count
    Debug.Print l 'Prints 16777216 in both versions
End Sub

Sub testVariant()
    Dim v As Variant
    v = Cells.Count
    Debug.Print v 'Prints 16777216 in both versions
End Sub

Como pueden ver en mis comentarios, laCells.Count el valor es16777216 (que es correcto para 2003), pero es lo mismopara ambas versiones, y eso no tiene sentido para mi. Citarmwolfe02 de una de las respuestas arriba enlazadas:

Las hojas de trabajo de Excel 2007 tienen 1,048,576 filas y 16,384 columnas para un total de 17,179,869,184 celdas.

Lo que me dice que el valor impreso en 2010 debería ser al menos (creo que realmente debería ser el mismo)17,179,869,184.

Entonces, ¿por qué este número no se imprime correctamente? ¿Por qué se devuelve el valor de 2003 en 2010?

Respuestas a la pregunta(1)

Su respuesta a la pregunta