VBA Publique Définis par l'Utilisateur Fonction dans Excel
J'ai créé la fonction ci-dessous:
Option Explicit
Public Function fyi(x As Double, f As String) As String
Application.Volatile
Dim data As Double
Dim post(5)
post(1) = "Ribu "
post(2) = "Juta "
post(3) = "Milyar "
post(4) = "Trilyun "
post(5) = "Ribu Trilyun "
Dim part As String
Dim text As String
Dim cond As Boolean
Dim i As Integer
If (x < 0) Then
fyi = " "
Exit Function
End If
If (x = 0) Then
fyi = "Nol"
Exit Function
End If
If (x < 2000) Then
cond = True
End If
text = " "
If (x >= 1E+15) Then
fyi = "Nilai Terlalu Besar"
Exit Function
End If
For i = 4 To 1 Step -1
data = Int(x / (10 ^ (3 * i)))
If (data > 0) Then
part = fyis(data, cond)
text = text & part & post(i)
End If
x = x - data * (10 ^ (3 * i))
Next
text = text & fyis(x, False)
fyi = text & f
End Function
Function fyis(ByVal y As Double, ByVal conds As Boolean) As String
Dim datas As Double
Dim posts(2)
posts(1) = "Puluh"
posts(2) = "Ratus"
Dim parts As String
Dim texts As String
'Dim conds As Boolean
Dim j As Integer
Dim value(9)
value(1) = "Se"
value(2) = "Dua "
value(3) = "Tiga "
value(4) = "Empat "
value(5) = "Lima "
value(6) = "Enam "
value(7) = "Tujuh "
value(8) = "Delapan "
value(9) = "Sembilan "
texts = " "
For j = 2 To 1 Step -1
datas = Int(y / 10 ^ j)
If (datas > 0) Then
parts = value(datas)
If (j = 1 And datas = 1) Then
y = y - datas * 10 ^ j
If (y >= 1) Then
posts(j) = "belas"
Else
value(y) = "Se"
End If
texts = texts & value(y) & posts(j)
fyis = texts
Exit Function
Else
texts = texts & parts & posts(j)
End If
End If
y = y - datas * 10 ^ j
Next
If (conds = False) Then
value(1) = "Satu "
End If
texts = texts & value(y)
fyis = texts
End Function
Quand je retourne à Excel et le type =fyi(500,"USD")
dans une cellule, il retourne #name
.
Merci de m'informer comment le résoudre.
OriginalL'auteur Sugih | 2010-04-12
Vous devez vous connecter pour publier un commentaire.
Le meilleur endroit pour des fonctions telles que c'est un Complément...
Pour faire un addin:
Faire un nouveau classeur
appuyez sur alt+F11
créer un module, l'appeler MyFunctions ou quelque chose d'autre significatif
déposez vos d'une fonction y
Une fois que vous avez fait tout cela, enregistrez votre classeur en tant que ExcelAddin (.xlam) et de la fermer.
Allez à Options Excel (ou Outils/macros complémentaires) et sélectionnez votre addin (ou aller à la addins onglet et cliquez ensuite Aller le trouver pour excel 07)
Maintenant votre une fonction sera toujours disponible dans chaque classeur sans avoir à préfixer
lorsque vous sélectionnez le nom du module, il y aura une section de la fenêtre ci-dessous qui vous permet de modifier les propriétés du module, y compris le nom. Cliquez et modifiez le nom et appuyez sur retour et il sera renommé.
OriginalL'auteur TerrorAustralis
Si votre fichier UDF est dans un classeur autre que le classeur de votre appel à partir d', préfixe de l'udf avec le nom du classeur. E. g.
D'Accord MarkNold. Bon travail @Dick Kusleika
OriginalL'auteur Dick Kusleika
Voir cette question connexe: Créer une fonction de feuille de calcul dans Excel VBA
En résumé:
Ce que vous avez devrait fonctionner.
Sur la base des commentaires à cette question, vous devez placer votre fonction définie par l'utilisateur dans un module autre que ThisWorkbook.
OriginalL'auteur bernie
Assurez-vous que votre fonction est dans un Module, pas dans la Feuille de calcul.
OriginalL'auteur Michael Rodrigues
Vérifier la typo: la fonction est
fyi
pasfyis
.Voir la dernière ligne
fyis = texts
, il devrait êtrefyi = texts
.fyis
est également une fonction dans le code de la question.OriginalL'auteur user5591067