Comment puis-je obtenir la valeur de la cellule à partir d'une formule dans Excel en utilisant VBA?
J'ai une formule dans une plage de cellules dans une feuille de calcul qui évaluent à des valeurs numériques. Comment puis-je obtenir les valeurs numériques en VBA à partir d'une gamme passés dans une fonction?
Disons que les 10 premières lignes d'Une colonne dans une feuille de calcul contiennent rand() et je suis de passage que comme un argument de ma fonction...
public Function X(data as Range) as double
for c in data.Cells
c.Value 'This is always Empty
c.Value2 'This is always Empty
c.Formula 'This contains RAND()
next
end Function
J'ai appeler la fonction à partir d'une cellule...
=X(a1:a10)
Comment puis-je obtenir à la valeur de la cellule, par exemple 0.62933645?
Excel 2003, VB6
J'ai fait quelques rapides du code VBA et j'obtiens la valeur de l'cellules Rand (), pas de problèmes. Peut-être poster plus de code pour voir ce qui se passe?
Richard, il n'y a plus de code, c'est ça... Tout ce que je veux faire est d'obtenir les valeurs des cellules et ils sont tous "Vide"
Veuillez également expliquer les conditions dans lesquelles vous utilisez la fonction d'. En particulier, les cellules sur la même feuille et est quelque chose d'actif au moment de l'utilisation, comme une boîte de dialogue ou certaines fonction Excel (certaine Gamme de méthodes ne fonctionnent tout simplement pas dans Excel, dans certaines situations).
Ouverture de la ligne de boucle For incorrect - devrait être: Pour Chaque c dans les données.Les cellules suppose que cela est une faute de frappe que le programme ne compile pas avec le Chaque manquant
Ne pourrait-il pas être "pour chacun"?
Richard, il n'y a plus de code, c'est ça... Tout ce que je veux faire est d'obtenir les valeurs des cellules et ils sont tous "Vide"
Veuillez également expliquer les conditions dans lesquelles vous utilisez la fonction d'. En particulier, les cellules sur la même feuille et est quelque chose d'actif au moment de l'utilisation, comme une boîte de dialogue ou certaines fonction Excel (certaine Gamme de méthodes ne fonctionnent tout simplement pas dans Excel, dans certaines situations).
Ouverture de la ligne de boucle For incorrect - devrait être: Pour Chaque c dans les données.Les cellules suppose que cela est une faute de frappe que le programme ne compile pas avec le Chaque manquant
Ne pourrait-il pas être "pour chacun"?
OriginalL'auteur Simon | 2009-05-23
Vous devez vous connecter pour publier un commentaire.
Le code suivant fonctionne pour moi lors de l'exécution de VBA (Excel 2003):
a et b sont de la même et égale à ce que je suis de passage (qui est une plage de cellules avec Rand ()). Je ne suis pas sûr de ce qui se passe ici.
Aha! Vous devez définir X, non? Je ne suis pas sûr exactement ce que vous attendez de cette fonction pour le faire, mais vous devez définir X (le nom de la fonction) pour la valeur que vous voulez retourner. Ajoutez cette ligne:
Peut-être mettre comment vous appelez la fonction X? De nouveau, de toute façon je ne peux penser à est de travailler pour moi.
X fonction comme écrit dans la question on ne peut pas faire n'importe quoi avec c.Valeur, c.Valeur2 ou c.De la formule. Présumer que nous avons besoin de faire effectuer une action à l'intérieur de la boucle sur c.La valeur de sorte que par exemple a = a + c.Valeur à l'intérieur de la boucle, alors X = a comme indiqué immédiatement au-dessus de
OriginalL'auteur Richard Morgan
Je ne peux pas reproduire le problème à l'aide de la mise en page que vous avez posté. J'ai remarqué quelques erreurs de syntaxe dans votre affiché le code (c'est à dire: "pour doivent être" pour chacun"). Mais quand j'ai mis =RAND() dans la plage A1:A10 et =X(A1:A10) j'ai eu un retour très bien avec ce:
Cependant, seulement un développer un peu plus sur quelques autres questions que vous frôlé. Vous pouvez évaluer une formule pour un résultat comme ceci:
Mais, en général, vous ne voulez pas, comme c'est essentiellement le calcul de la même valeur à deux reprises.
OriginalL'auteur Oorang
Assurez-vous de faire un calculer avant de demander la valeur.
À la Vitesse des macros quelque chose comme ce qui suit est souvent préformé..
dans cet état, vous devez forcer le calcul de l'avant la valeur sera disponible.
Pas vraiment comme vous ne sont que le calcul qu'une seule cellule. Pas la totalité de la feuille. Côté de la plus grande CPU de veille est de désactiver l'écran de mise à jour.
OriginalL'auteur Frobbit