EXCEL VBA中,如何使一个自定义函数工作起来?

发布网友 发布时间:2022-04-21 08:58

我来回答

3个回答

热心网友 时间:2023-11-08 12:45

你用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 '估计楼主是在某个窗体中使用的,姑且定为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
运行成功!

热心网友 时间:2023-11-08 12:45

function有回传的值 调用的时候写,
dim kkk as integer
kkk=aaa(4)
sub没有回传值,只在方法体内进行代码执行。相当于VC中的void

public sub kkk(byval zzz as integer)
...
end sub
调用的时候写
call kkk(4)
或: kkk(4)

热心网友 时间:2023-11-08 12:46

你函数放在什么地方了??
函数放在模块里的话,最好前面加上public。
因为click代码你肯定放在form里的,如果函数放在模块里的话没有public是调用不到的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com