Falscher Wert beim Zählen von Zellen in verschiedenen Excel-Versionen

Ich habe gesehen, dass einige SO-Benutzer auf ein Problem gestoßen sind, als sie versucht haben, eine Variation von zu verwendenCells.Count; Der VBA-Code löst in einigen Fällen einen Überlauffehler aus.

Hinweise finden Sie in den Kommentaren zudiese Antwort:

Ich denke, das wird funktionieren, aber ich erhalte einen "Überlauf" -Fehler und er verweist auf den Code "If Master.Cells.SpecialCells (xlCellTypeVisible) .Count> 0 Then" --- Es scheint, als würde nicht nach etwas Bestimmtem gefiltert - user1556069

unddiese Antwort:

Funktioniert dies nur (und Cells.Count hat nicht funktioniert), weil letztere eine Ganzzahl mit 16 Bit und einem Maximalwert von 65.536 verwendet und die gesamte Tabelle eine größere Zahl zurückgegeben hat? - fast_code

Ich gehe davon aus, dass VBA irgendwo hinter den Kulissen versucht, die Zellenzahl auf eine kleine Ganzzahl (16 Bit) oder eine lange Ganzzahl (32 Bit) zu reduzieren. Die Zellenzahl eines Excel 2007-Arbeitsblatts würde diese beiden Datentypen überschreiten. Leider kann ich es derzeit nicht isolieren, da ich keine Kopie von Excel 2007 zur Hand habe und Ihren Fehler nicht reproduzieren kann. - mwolfe02

Als ich versuchte, das zu verstehen, versuchte ich mich selbst zu reproduzieren und bekam einen Überlauf, als ich versuchte zuzuweisenCells.Count als eine ganze Zahl. Dies ist sinnvoll, da der Wert für den Datentyp Integer zu groß ist.

Unter Verwendung des folgenden Codes in Excel 2003 und 2010 erhielt ich ein numerisches Ergebnis, als ich versuchte, es als Long oder Variant zuzuweisen.

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

Wie Sie in meinen Kommentaren sehen können, dieCells.Count Wert ist16777216 (das ist richtig für 2003), aber es ist das gleichefür beide VersionenUnd das ergibt für mich keinen Sinn. Zitierenmwolfe02 aus einer der oben verlinkten Antworten:

Excel 2007-Arbeitsblätter enthalten 1.048.576 Zeilen und 16.384 Spalten für insgesamt 17.179.869.184 Zellen.

Das sagt mir, dass der Wert, der 2010 gedruckt wurde, mindestens sein sollte (ich glaube, er sollte wirklich der gleiche sein).17,179,869,184.

Warum wird diese Zahl also nicht richtig gedruckt? Warum wird der Wert für 2003 im Jahr 2010 zurückgegeben?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage