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

我有一个TextBox1,数个Label(Label1,Label2,Label3...),并且自定义了一个函数:
Function char_a(q As String, w As Single)
If Len(q) < 0 Or w <= 0 Then
MsgBox "函数参数错误"
Exit Function
Else
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 If
End Function

然后,我为每一个Label写如下模块:
Private Sub Label1_Click()
char_a("[n]",3)
End Sub

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

Private Sub Label3_Click()
char_a("[mp##]",5)
End Sub
.
.
.
但是在运行时,报错语法错误。我用过Lua,Flash AS等等脚本语言,但是不太熟悉VB的自定义函数,差帮助也差不出来什么,希望各位大大帮助解决!可能代码比较多,我多给些分数,拜托了各位!

你用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
运行成功!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-11
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)
第2个回答  2010-03-11
你函数放在什么地方了??
函数放在模块里的话,最好前面加上public。
因为click代码你肯定放在form里的,如果函数放在模块里的话没有public是调用不到的。

EXCEL VBA中,如何使一个自定义函数工作起来?
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 &...

Excel中进行自定义函数的设置技巧
1、打开VBA窗口 按ALT+F11调出VBA窗口,插入一个用户模块。2、编写代码 通常自定义函数是用function命令开始的,在这个命令后面给它指定一个名字和参数 把下面这个自定义函数代码粘贴到刚插入的用户模块中就可以使用了。Function sjxmj(di, gao)sjxmj = di * gao \/ 2 End Function 这段代码非常简单...

Excel中引用自定义函数的实现方法
Excel中引用自定义函数的实现步骤如下:打开Excel2007,切换至“开发工具”选项卡,点击“Visual Basic”按钮进入VBA编程环境。在VBA环境下,右击“Microsoft Excel对象”,在弹出的菜单中选择“插入”→“模块”。接着点击“插入”菜单中的“过程”。在打开的“添加过程”窗口中,输入函数名称,例如“ShowI...

excel自定义函数以及excel自定义函数如何添加和使用
在Excel工作表界面下按组合键打开VBA编辑器,单击“插入”→“模块”,并在右边的代码窗口输入自定义函数的程序代码。单击窗口右上角的“关闭”按钮关闭VBA编辑器,返回excel工作表界面。第三,excel如何使用自定义函数 在当前工作簿中使用创建的自定义函数,并且可以在函数列表的“用户定义”类别中找到此自...

如何在Excel里调用python自定义函数?在VBA里调用python代码?
在Excel中轻松调用Python自定义函数和VBA代码,可通过Python语言环境与xlwings模块实现。以下是详细的步骤:首先,确保安装Python,推荐使用anaconda版本,它包含了常用库。然后,安装xlwings模块,可以通过Anaconda Prompt进行安装,并将生成的"xlwings.xlam"文件添加到Excel加载项。在Excel的开发工具选项卡中,找到...

如何在Excel里调用python自定义函数?在VBA里调用python代码?
(1)在Interpreter栏填入python.exe文件的完整路径,在PYTHONPATH栏填入引用Python自定义函数或代码的Python文件所在路径,在UDF Modules栏填入引用Python自定义函数或代码的Python文件名。(2)在信任中心-宏设置中,勾选“信任对VBA工程对象模型的访问”选项,以免在引入Python自定义函数时出现错误。完成以上...

Excel中如何添加自定义函数
首先,通过VBA开发自定义函数。打开新的工作簿,按下【alt+F11】,在VBE编译环境中选择“Microsoft Excel 对象”,插入模块。为模块命名“自定义函数”,然后编写代码,使WLOOKUP函数生效。然而,仅限当前工作簿使用,若要使其全局可用,需将工作簿保存为Excel加载宏(*.xlam),通过【F12】快捷键进行...

EXCEL中VBA函数其中使用自定义函数JOINIF函数连接文本
Len(MyStr) – 1)End Function2、点击【文件】【另存为】,文件保存类型选择“Excel加载宏”。它将自动存入ADDIN文件夹中。3、从要使用此函数的EXCEL文件的【开发工具】-【加载宏】中勾选所保存的宏文件名,确定。就可以在工作表中的随心所欲的使用自定义的按条件连接文本函数啦。4、看一下使用效...

想在excel中插入自定义的函数,用VB应该怎么编写啊?
按ctrl+F3,出来定义名称窗口 在当前工作簿的名称随便写,例如:刘德华 引用位置写入公式 =(31.814*A1+22.853*A2+11.824*A3+11.267*A4+10.384*A5)\/88.142 A1单元格输入Q1的值,以此类推 然后再任意单元格输入=刘德华,就可求出结果 ...

excel中VBA如何在模块中自定义函数,定义好了之后如何在窗体中调用?谢谢...
function的调用很简单,直接写函数名和参数 如 msgbox ss 而sub的调用直接call,如:Public Sub ss()ss = "我是"End Sub 调用call ss 另外一点需要注意,调用模块定义的函数,直接写函数名。但如果调用窗体的函数,就得把窗体加上。比如,我要调用sheet1下的bb函数,则该写成 call sheet1.bb ...

相似回答