He visto a algunos usuarios de SO tener un problema al intentar usar alguna variación de Cells.Count
; el código de VBA arroja un error de desbordamiento en algunos casos.Valor incorrecto al contar celdas en diferentes versiones de Excel
Como referencia, véanse los comentarios sobre this answer:
Creo que esto va a funcionar, pero me da un error de "desbordamiento" y me apunta al código "Si Master.Cells.SpecialCells (xlCellTypeVisible) .count> 0 Entonces " --- parece que no se ha filtrado nada en particular - user1556069
y this answer:
¿Funciona esto onyl (y Cells.Count no funcionó) porque el último usó un número entero, 16 bits, valor máximo de 65.536 y la hoja de cálculo completa devolvió un numbr mayor? - fast_code
asumo que en algún lugar detrás de las escenas de VBA está tratando de coaccionar el recuento de células a un pequeño número entero (16 bits) o entero largo (de 32 bits). El recuento de celdas de una hoja de cálculo de Excel 2007 desbordaría ambos tipos de datos . Desafortunadamente no puedo aislarlo ahora porque no tengo tenga una copia de Excel 2007 a mano y no pueda reproducir realmente su error . - mwolfe02
Tratando de entender esto, he intentado reproducir mí mismo y tengo un desbordamiento cuando se trata de asignar Cells.Count
como un entero. Esto tiene sentido ya que el valor es demasiado grande para el tipo de datos Integer.
Usando el código a continuación en Excel 2003 y 2010, se me dio un resultado numérico al intentar asignarlo como Long o Variant.
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 se puede ver en mis comentarios, el valor es Cells.Count
16777216
(que es correcto para el 2003), pero es el mismo para ambas versiones , y que no tiene sentido para mí. Para citar mwolfe02 de una de las respuestas anteriormente vinculado:
Excel 2007 hojas de trabajo tienen 1.048.576 filas y 16.384 columnas para un total de 17,179,869,184 células.
Lo que me dice que el valor impreso en 2010 debería ser al menos (creo que debería ser el mismo) 17,179,869,184
.
¿Por qué este número no se imprime correctamente/por qué se devuelve el valor de 2003 en 2010?
16777216 es '0x1000000' y 17179869184 es' 0x400000000' en hexadecimal solo FYI. – TheZ
¿Está ejecutando Excel 2010 en modo Compatability o mirando un archivo guardado en formato 2003? –
@TimWilliams Comencé abriendo una nueva sesión de Excel 2010, que de manera predeterminada era Book1, en la que pegué el código anterior. ¿Cómo puedo determinar si estoy en compatibilidad? ¿modo? – Gaffi