乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 怎么用VBA定义一个功能函数?-excel vba自定义函数调用,vba调用自定义函数

怎么用VBA定义一个功能函数?-excel vba自定义函数调用,vba调用自定义函数

作者:乔山办公网日期:

返回目录:excel表格制作


在function开始处加一句,Application.Volatile,用此句讲自定义函数设置为易失性函数,这样才能保证数据发生变化时,函数重新计算
比如:
Function getABC()
Application.Volatile
'函数主体
End Fcuntion

如果是奇数和偶数,直接用公式 =if(mod(A1,2)=1,"奇数","偶数")
如果是质数还是合数,用数组公式(同时按Ctrl、Shift、Enter) =IF(A1=1,"??",IF(OR(A1=2,A1=3),"质数",IF(OR(INT(A1/ROW((INDIRECT("2:"&INT(SQRT(A1))))))=A1/ROW((INDIRECT("2:"&INT(SQRT(A1)))))),"合数","质数")))

自定义函数:
Function JHSHU(x As Long) As String
Dim i As Long
If x = 1 Then JHSHU = "??": Exit Function
If x = 2 Or x = 3 Then JHSHU = "质数": Exit Function
For i = 2 To Int(Sqr(x))
If Int(x / i) = x / i Then
JHSHU = "合数"
Exit Function
Else
JHSHU = "质数"
End If
Next i
End Function
=SUMPRODUCT(B1:B7,C1:C7) 这个可以满足

平均算法

Public Function AVERAGEx(x As Range, y As Range)
Dim m
For i = 0 To x.Count - 1
If Cells(y.Row + i, y.Column).Value <> 0 Then
m = m + Cells(x.Row + i, x.Column).Value
End If
Next
AVERAGEx = m
End Function
这是自定义函数,试试吧

你用function的话,这个是个函数,是个值,当然不能在那儿孤零零的使用。
要这样用,a=char_a("[n]",3),要赋予某个变量。
而sub就不一样了,本身只是个子程序,调用即可。
call sub(a,b)或者sub a,b
修改后的结果,楼主查收:
Sub char_a(q As String, w As Single)
If Len(q) < 0 Or w <= 0 Then
MsgBox "函数参数错误"
Exit Sub
Else
With UserForm1 '估计楼主是在某个窗体中使用的e5a48de588b6e799bee5baa6e79fa5e98193337,姑且定为userform1
i = .TextBox1.SelStart
n = Left(.TextBox1.Value, .TextBox1.SelStart)
m = Right(.TextBox1.Value, Len(.TextBox1.Value) - .TextBox1.SelStart)
.TextBox1.Value = n & q & m
.TextBox1.SelStart = i + w
End With
End If
End Sub

各个模块使用如下:
Private Sub Label1_Click()
Call char_a("[n]", 3)

End Sub
Private Sub Label2_Click()
Call char_a("[p##]", 4)
End Sub

Private Sub Label3_Click()
Call char_a("[mp##]", 5)
End Sub
运行成功!

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网