Excel VBA WorksheetFunction.CountA - ne fonctionne pas après la mise à niveau vers Office 2010
Le morceau de code suivant fonctionne dans Excel avant 2010:
myRange = Range("A:A")
NumRows = Application.CountA(myRange)
Il y a 38 cellules contenant du texte ou des valeurs dans la colonne A. Lorsque le code est exécuté dans Excel 2007, NumRows correctement évalue à 38, cependant, il (à tort) évalue à 65 536 dans Excel 2010.
Entrer dans le CountA
fonction dans la cellule fonctionne bien dans les deux versions.
Fil similaire est question 16696891, mais il n'y avait pas de réponse et les suggestions ont été, je pense, harengs rouges...
Des idées?
OriginalL'auteur Richard Ell | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas exactement quel est ton problème, parce que je ne peux pas obtenir votre code de travail comme l'a écrit. Deux choses semblent évidentes:
Range
doit être attribué àmyRange
. Depuis unRange
type est un objet en VBA, il doit êtreSet
, comme ceci:Set myRange = Range("A:A")
CountA()
doit être appelé avec.WorksheetFunction
Si vous ne le faites pas déjà, pensez à utiliser l'Option Explicite option en haut de votre module, et en tapant vos variables avec
Dim
états, comme je l'ai fait ci-dessous.Le code suivant fonctionne pour moi en 2010. Espérons que cela fonctionne pour vous aussi:
Bonne Chance.
.WorksheetFunction
, en faitApplication.CountA
doit travailler sur son propre. Sur le PC en question,Application.WorksheetFunction.CountA(Range("A:A"))
montre de 65 536 même si seulement 38 cellules contiennent quoi que ce soit. Je ne peut pas reproduire sur mon propre bureau. J'ai pensé qu'il pourrait être une sorte de problème avec la mise à niveau d'une version d'office à l'autre. Le "nouveau" PC Office 2010 sur Windows 7, et a été mis à niveau à partir d'Office 2007 sur Windows 2003.Pourrait-il être un problème avec la feuille de calcul. Essayez de sélectionner tous les "vider" les cellules, de les supprimer, et de l'économie. Si cela ne résulte pas prévue dans le "38" résultat, je suis perplexe.
OriginalL'auteur Instant Breakfast
Cette réponse d'un autre forum a résolu le problème.
(à remplacer par votre propre gamme pour le "I:I" montré ici)
Re: Nbval pas de travail en VBA
OriginalL'auteur Justin
Ce code fonctionne pour moi:
OriginalL'auteur CallumDA
Il semble qu'il y ait un changement dans la façon dont l'Application.COUNTA travaille dans VB7 vs VB6. J'ai essayé les deux versions de VB.
En VB6 il renvoie 0.
Inn VB7 il retourne 32
Ressemble VB7 ne tient pas compte des COUNTA être COUNTA plus.
OriginalL'auteur unhappy VB7 users
Il peut être évident, mais, en indiquant la Plage et ne comprenant pas quel classeur ou une feuille de calcul, puis il peut être essayer de Nbval() sur une autre feuille entièrement.
Je trouve, pour répondre pleinement à ces choses permet d'économiser beaucoup de maux de tête.
OriginalL'auteur perfo