Ne peut pas VBA écrire des données dans des cellules dans Excel 2007/2010 au sein d'une fonction
Je tiens à mettre en valeur pour des cellules en VBA. J'ai googlé, et de voir certains de résolution:
Sheets("SheetName").Range("A1").value = someValue
Sheets("SheetName").Cells(1,1).value = someValue
Avec ce genre de code, je peux juste lire les données à partir de la cellule A1, mais je ne peux pas définir une nouvelle valeur pour elle.
Mise à jour
Le code de la cellule A1 de la valeur est mise dans un Function
comme ci-dessous.
Function abb()
Sheets("SheetName").Range("A1").value = 122333
abb = 'any thing'
End Function
Dans la cellule B2, j'ai mis =abb()
et appuyez sur entrée. Je reçois #VALEUR, mais rien ne se passe à A1.
De mettre ce code dans une macro, il fonctionne.
Ma question est, comment faire A1 avoir des valeurs dans une fonction?
- Vous avez deux choix. Soit l'exécuter comme une sous-Routine, ou de l'utilisation de l'UDF minuterie solution de contournement à partir de stackoverflow.com/q/8520732/641067. Le premier est plus facile.
- Si vous voulez un retour de la fonction de quelque chose dans A1, puis l'appel de la fonction doit être saisie en A1. C'est la façon dont Excel fonctionne.
- Pourquoi ne pas vous piéger sat changement de B2 avec une feuille de modifier l'événement puis remplir A1? À partir de votre code, la fonction ne sera pas mise à jour car il n'a pas d'arguments.
Vous devez vous connecter pour publier un commentaire.
De votre commentaire ci-dessus vous voulais essayer cette approche
Si vous entrez
=abb()
dans n'importe quelle cellule
Puis la cellule A1 de la feuille de wil être mis à 12333
C'est la ligne de mise à jour de choisir la cellule de mise à jour, et de placer une valeur dans il
Range("A1").Value = 122333
De Je ne veux pas que mon Excel Add-In pour retourner un tableau (à la place j'ai besoin d'une fonction pour modifier d'autres cellules)
Vous ne pouvez pas modifier la cellule A1 avec une fonction dans B2.
Visite: Description des limites de fonctions personnalisées dans Excel
. Le texte comprend:
"Une fonction définie par l'utilisateur appelé par une formule dans une cellule de feuille de calcul ne peut pas modifier l'environnement de Microsoft Excel. Cela signifie qu'une telle fonction ne peut pas faire les suivants:
Pourquoi voulez-vous changer la cellule A1 de cette façon? Expliquez votre objectif et peut-être que quelqu'un peut aider.
Range(B1:B1000)
, je veux que cache cette somme de la valeur de A1 (ou une cellule), j'ai donc rouvrir le fichier excel, excel n'a pas besoin de recalculerAfterUDFRoutine2
avec des arguments?brettdj
Si vous souhaitez modifier deux cellules dont l'une formule, vous pouvez envisager de retourner un tableau à partir de votre fonction. Voici un exemple:
Sélectionnez les cellules A2 à B2. Type
=abb()
et appuyez sur MajCtrlEntrée pour indiquer qu'il s'agit d'une formule matricielle. Cette formule modifie alors les deux cellules (A2 et B2) en même temps.Peut-être que vous pouvez personnaliser cette de faire ce que vous voulez.
il devrait fonctionner - essayez ce
Sheets("Sheet1").Range("A1").Value2 = "value"
vous pouvez utiliser à la fois
.Value
et.Value2
, assurez-vous que le nom de la feuille est correct.Sheet1
alors la question va venir.. essayez plutôt ceciSheets(1).Range("A1").Value
, l'index vous aidera à trouver la bonne feuille, une fois que cela fonctionne, vous pouvez remplacer l'indice avec le nom de la feuille.MsgBox someValue
cette volonté de dire ce que l'msgbox contient.. si la cellule excel est l'obtention de leur mise à jour de la déclaration deSheets("Sheet1").Range("A1").Value2=someValue
travaille...Sheets("Sheet1").Range("A1").Value2=someValue
dans Sous et d'appel appuyez sur la touche F8, c'est du travail. mais si l'appel en ce Sous dans une autre fonction, il n'est pas du travail. pourquoi...