#PRÉNOM? erreur dans Excel pour la fonction VBA
Je fais mon premier programme VBA et d'essayer d'exécuter la fonction suivante. La fonction vérifie spécifiques de la plage nommée pour la première ligne qui n'a pas une valeur plus grande que la valeur principale, mais moins de 1.
Public Function findPurchase()
Dim CRT As Range
Set CRT = Range("CostRateTable")
Dim existsBetter As Boolean
existsBetter = True
Dim r As Integer
r = 2
Dim c As Integer
c = 4
While existsBetter
Dim Found As Boolean
FoundBetter = False
While Not FoundBetter And c <= CRT.Columns.Count
If CRT(r, c) > CRT(r, 2) And CRT(r, c) < 1 Then
FoundBetter = True
Else
c = c + 1
End If
Wend
existsBetter = FoundBetter
If existsBetter Then
r = r + 1
End If
Wend
findPurchase = CRT(r, 3)
'MsgBox(findPurchase)
End Function
Je sais que la fonction qu'il est censé, car j'ai à la fois vérifiée manuellement la table des valeurs, supprimé le commentaire " de la MsgBox, et utilisé les outils de débogage et de sortie de chacune des fonctions étapes comme il est passé à travers la table. Cependant, lorsque je fais appel à la fonction dans Excel avec =findPurchase()
je me suis donné un #NAME?
erreur. La fonction s'affiche dans la fonction d'auto-remplir la case quand je commence à taper son nom. Quand j'écris d'autres fonctions, à la fois avec et sans paramètres, je peux faire référence, par exemple:
Function addtwo()
addtwo = 1 + 2
End Function
Ce que je fais mal avec ma fonction qui le fait de ne pas travailler?
source d'informationauteur Teofrostus
Vous devez vous connecter pour publier un commentaire.
Vous obtenez cette erreur, parce que vous avez un module avec le même nom que la fonction.
Changer ce nom pour dire
find_Purchase
et tout ira bien : -) Voir l'image ci-dessous...J'ai eu le même problème moi-même. Il s'est avéré que j'ai "Sauvé..." un autre fichier et les macros n'ont pas été activée pour ce fichier. Pas de bannière sur le dessus est apparu, mais un
#NAME?
erreur a été générée.J'ai réouvert le fichier, activé les macros, et le problème a été résolu.
Assurez-vous que vous avez placé la fonction dans un Module Standard. Le message d'erreur signifie Excel ne peut pas trouver la fonction.
Lorsque Excel ouvre un inconnu classeur contenant VBA Code, il demande habituellement pour les macros pour être activé par l'utilisateur (en fonction des paramètres de l'application).
Si l'utilisateur active les macros, tous pilotés par les événements procédures sera lancé, comme
auto_open
ou autres.Personnalisé Fonctions VBA toutefois exiger pour un plein de recalculer le classeur. Sinon, le retour des fonctions de valeur est toujours
#NAME
que le calcul n'est effectué directement après l'ouverture du classeur.Afin de travailler directement à la première heure d'ouverture, on doit ajouter la ligne suivante à la
workbook_open
événementCochez la case "faire Confiance à l'objet du projet VBA modèle" Macro-paramètres des Macros, de sécurité
J'ai eu le même problème persistant avec l'un de mes fonctions lorsque tout semblait bien aller.
Ouvrez la feuille de calcul & allez à l'Onglet Développeur. Ouvrir VBA, et le retour sur le Développeur du ruban, sélectionnez "Afficher le Code". Voir s'il s'ouvre tout un Code similaire (à l'exception de votre Module) qui lui est propre feuille de calcul (par exemple. Feuil2 (Code). J'ai trouvé que j'avais dupliqué le code de la feuille de calcul en plus du Module. Supprimer la "feuille de calcul" du code. (Vous pouvez avoir besoin pour enregistrer le classeur & re-ouvert à ce stade). Quand j'ai supprimé le code de la feuille de calcul, la fonction du module a ensuite travaillé.
En plus de vérifier certains des éléments mentionnés ci-dessus, vous pourriez avoir besoin de spécifier le nom du fichier où la fonction personnalisée est en fait défini, par exemple, le contenu d'une cellule
=XLstart.xlsm!myCustomFunc(Arg1,Arg2)
où myCustomFunc est définie dans le fichier de démarrage XLstart.xlsm.
Suite à l'aide d'Excel pour "Corriger une #NOM? erreur":
Dans la barre de formule, sélectionnez [le suspect] nom de la fonction.
Dans la Zone Nom (à gauche de la barre de formule), cliquez sur la flèche, puis sélectionnez [défini par l'utilisateur] fonction à partir de la liste Excel suggère.
Cela va ajouter le nom de fichier pour le format ci-dessus.
MS 2010, Windows 10.
Vrai,
J'ai eu le même (dans Excel 2010) et quand j'ai migré vers Excel 2016 , le prototype de fonction a été montré, mais quand j'ai terminé la fonction, le NOM de l'erreur a été montré avec un pop-up... de sorte que le code n'a jamais été déclenché.
Il s'est avéré que j'avais une Macro du même nom qu'un Sub ou UDF fonction !
J'ai renommé la Macro, et puis il a travaillé
Acclamations
Une autre cause que j'ai trouvé pour le #NOM? l'erreur est que le classeur de macros avec la fonction personnalisée a un nom de plage le même que le nom de la fonction. J'ai changé le nom de la fonction et résolu le problème.