vba中如何调用公共函数

作者&投稿:移军 (若有异议请与网页底部的电邮联系)
vba中如何调用公共函数?~

函数定义了之后就可以类似 系统的函数拿来使用,
=函数名(参数列表)
函数如果不关心其返回值,可以用:函数名 参数列表【注意,不加小括号】的形式拿来用,此时函数的功能与过程类似了
【例:MsgBox "Hello World!"】

过程可以用Call调用 ,如:Call 过程名(参数列表),也可不加Call

=============================================
按照你的说明 ,写了以下小例子,没有出错:

Private Function a(b As Range) As Integer
Range("D1") = "Run a"
a = 2
End Function

Sub c()
Dim d As Range
Set d = Sheet1.Range("a1:d1")
Call a(d)
End Sub

运行后 “D1”中内容已经更改了!说明已经能够正确运行了

你的出错 请给出出错信息!

对于自己定义的函数,用Call调用,Call "函数名"。
CallByName 函数,执行一个对象的方法,或者设置或返回一个对象的属性。

函数定义了之后就可以类似 系统的函数拿来使用,
<变量>=函数名(参数列表)
函数如果不关心其返回值,可以用:函数名 参数列表【注意,不加小括号】的形式拿来用,此时函数的功能与过程类似了
【例:MsgBox "Hello World!"】

过程可以用Call调用 ,如:Call 过程名(参数列表),也可不加Call

=============================================
按照你的说明 ,写了以下小例子,没有出错:

Private Function a(b As Range) As Integer
Range("D1") = "Run a"
a = 2
End Function

Sub c()
Dim d As Range
Set d = Sheet1.Range("a1:d1")
Call a(d)
End Sub

运行后 “D1”中内容已经更改了!说明已经能够正确运行了

你的出错 请给出出错信息!

vba模块中的公共函数是直接拿来可以用的就跟已经在本模块中一样用法,用的时候就跟楼上说的一样用 call a(b)

返回数组我一般用两个方法,
第一个方法是定义一个公用的数组,在哪个模块都可以
如public b(10) as long
第二个方法是在过程中定义好数组,在调用函数的时候以参数的形式传递参数的地址。如
sub main()
dim b(10) as long
call trans(byref b) '这里必须在b之前写上byref,表示传达数组地址
'从这里开始就可以使用已经被sub trans处理过的数组b(10)了
。。。。。。
end sub

sub trans(bb as long)
。。。。。。
end sub

模块一,两个fun:
---------
Public Function aFun(n() As Long, m As Integer)
For i = LBound(n) To UBound(n)
n(i) = n(i) + 10
Next
m = m + 100
End Function

Public Function bFun(rng As Range)
On onerror GoTo 100
With rng
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
With .Cells(i, j)
If IsNumeric(.Value) And Not IsEmpty(.Value) Then .Value = .Value + 100
End With
Next j, i
End With
100:
End Function
------------
模块二,两个sub,调用上面的两个fun:
---------
Public Sub a()
Dim iArr(1 To 3) As Long
Dim a As Integer
For i = 1 To 3
iArr(i) = i
Next
a = 5
Call aFun(iArr, a)
MsgBox iArr(3) & Chr(10) & a
End Sub

Public Sub b()
Dim iRng As Range: Set iRng = Range("a1:b5")
If iRng.Count <= 1 Then iRng.Value = iRng.Value + 100: GoTo 100
Call bFun(iRng)
100:
End Sub

假设我在一个模块中建立了一个公共函数a
public function a(b as string)
...
end function

在另一个模块中的建立一个过程c
sub c()
...
end sub
那如果我想从另一个模块中的过程c调用这个公共函数a该怎么做呢?

顺便问一下,如果我想在函数中返回一个数组该怎么做呢?
听说call也可以??

通过VBA调用函数并给函数指明参数的几种调用方法:
①种调用方法
Worksheets(1).Range("E6") = WorksheetFunction.Median(Range("A1:B4"))
这种调用形式,函数的参数是单元格地址区域,属于普通型,但数据区域的定义难于确定。
②种调用方法
Worksheets("sheet1").Range("D6") = Application.Min(Range("A1:B4"))
这种调用形式,函数参数的数据区域及工作表名称,属于普通型,灵活性不够。
③种调用方法
Worksheets(1).Range("C6") = Application.Max(Worksheets("Sheet1").Range("A1:B4"))
此类调用方法,直接指明工作表名称及数据范围,但还是缺乏灵活性。
④种调用方法
Worksheets(1).Range(Cells(6, 2), Cells(6, 2)) = Application.WorksheetFunction.Average(Worksheets(1).Range(Cells(1, 1), Cells(4, 2)))
这种调用方法,是最标准、最灵活、最具有代表性、最完整、出错率最低的一种调用方法。
因为一个工作薄包含多张工作表,只要在调用中,首先指明工作表名称再给出数据范围,这样,就不会和其它工作表混淆,另外,对表的名称和数据区域的引用,完全都是通过可构造性的行列序号来标记的,这种方法是相当的灵活。
另外,调用函数的时候,也是逐渐引用。首先是Application引用,再次是WorksheetFunction引用,最后长到函数名称,如:Application.WorksheetFunction.Average,这样就可以保证逻辑性的完整,可以避免错误的发生。
请注意VBA只能调用EXCEL绝大多数的函数,而不是所有函数。


这种BA控制公共照明系统,是每1个回路1个控制点,还是整个配电柜1个控制...
强制点亮,只要一个点就行了,

楼宇自控(BA)工程师的职业发展方向有哪些
定制化服务。楼宇自控系统不仅需要满足基本的控制功能,还需要提供定制化的服务,以满足不同用户的需求例。如,针对医院等公共场所,楼宇自控系统可以提供智能化的医疗设施和安全监控等服务,提高公共场所的管理效率和安全水平。随着城市化的加速和人们对智能化楼宇的需求不断增长,楼宇自控行业的前景十分广阔。...

矩阵AB=BA,为什么A,B有公共特征向量
A的任一特征子空间都是B的不变子空间, 注意(复数域上)非平凡的不变子空间里一定有特征向量

楼宇BA系统方案怎么做的
一般这个都是根据实际的情况来制定的方案,而且这个楼宇BA自控系统涉及的内容还很多。目前开发楼宇BA系统比较成熟的应该是英唐众创,其楼宇BA系统包括建筑物内的公共照明、供暖通风,空调冷风热泵机组、空调机组、恒压供水系统、广告照明系统、监控系统等。对于每个系统有细致的功能设置,在目前是使用的比较多...

绿色建筑中如何设计BA系统?
在绿色建筑中,以BA系统为平台,整合各子系统数据,进行各子系统的联合控制,使建筑室内各子系统始终在最优状态下运行。采用控制技术降低了建筑能耗,促进大型公共建筑室内各系统联动控制相关领域的发展。另外,通过对采集的建筑设备运行及能耗数据进行分析,可及时发现问题,对建筑设备进行优化改造,从而提高...

高等代数证明: 如果AB=BA,则A和B有公共的特征向量
首先,AB=BA说明A和B都是方阵。设\\mu是B的某个特征值,X是\\mu对应的特征子空间。对X中的任何向量x,必有 BAx=ABx=\\mu Ax 也就是说Ax属于X,于是X是A的一个不变子空间,里面必含有A的特征向量。

什么是BMS系统?什么是BA系统?在智能建筑中的解释
BMS系统的目标是要对大厦内所有建筑设备采用现代化技术进行全面有效的监控和管理。确保大厦内所有设备处于高效、节能、最佳运行状态。提供一个安全、舒适、快捷的工作环境。具体可分解为如下子目标:◆集中管理:可对各子系统进行集中统一式监视和管理,将各集成子系统的信息统一存储、显示和管理在同一平台上...

建筑BA ?
(1)具有先进的楼宇自动控制系统(BA)能够根据人们的需要,自动调节楼宇内的各种机电设备,包括电梯系统、空调系统、 照明系统、治安系统及消防系统等,以创造适合不同需求的人们所要求的不同的舒适工作环境,提高工作效率。(2)先进的办公自动化(OA)能提高人们的工作效率,办公事务快捷而方便、包括...

在BA系统中DDC安装要套哪些定额
ddc控制接触器 接触器来控制风机 弱电和强电分开

ba管是什么管
BA管的应用范围 BA管广泛应用于各类建筑物中,如住宅、商业楼宇、公共设施等。无论是新的建筑施工还是旧建筑的改造,BA管都能发挥重要的作用。随着建筑行业的不断发展,BA管的需求也在不断增加,其在电气系统中的作用将越来越重要。总的来说,BA管作为电气导管,在建筑物的电气系统中扮演着重要的角色...

福田区15543386354: vba中如何调用公共函数 -
淳苇卡瑞: 函数定义了之后就可以类似 系统的函数拿来使用,=函数名(参数列表) 函数如果不关心其返回值,可以用:函数名 参数列表【注意,不加小括号】的形式拿来用,此时函数的功能与过程类似了 【例:MsgBox "Hello World!"】 过程可以用...

福田区15543386354: VBA如何在一个模块中引用另一个模块的函数 -
淳苇卡瑞: 1、按ALT+F11调出EXCEL中VBA界面. 2、右键插入一个模块. 3、首先新建一个子程序,如图,填写公式进去. 4、for 是可以从任意数字开始和结束的,如图,我们从第2行到第10行.点击运行后,依次计算并填写完成. 5、接下来,用同样方法写完求平均数公式. 6、同样,运行后,可以看到,不均数也填写完成了. 7、这样填写的是公式,仔细观察,会发现相当于我们自动输入了公式,而不是计算后的值.

福田区15543386354: 怎样在VBA指令中调用Excel函数 -
淳苇卡瑞: 1在用函数时候加上application.或worksheetfunction. 2,例如vlookup(),写为application.vlookup()即可

福田区15543386354: 如何用VBA实现函数间的调用? -
淳苇卡瑞: 在VBA的模块中直接定义函数,然后调用就可以了,比如这样 function abc(str as string) msgbox str end function 你调用的时候就直接在程序中写:abc "信息" 你的问题不太清楚,还有问题可以Hi我 ---------------------------------------------- 这样是正确的,因为你的函数根本不用传递参数

福田区15543386354: vba的函数调用与取得返回值 -
淳苇卡瑞: 1、直接调用或者call 过程名 call 函数名就可以了,比如 Private Sub CommandButton1_Click() MsgBox "你调用了CommandButton1_Click过程" End Sub Private Sub CommandButton2_Click() Call CommandButton1_Click End Sub2、如果有...

福田区15543386354: VBA怎么建立函数呢 -
淳苇卡瑞: 菜单中有一个插入,然后选择 创建一个模块,在右侧空白的编辑区域写入 Public Function AAA() '写入你的代码 End Function 这就是一个公共函数:名字叫AAA

福田区15543386354: vba怎么调用其他excel工作表函数 -
淳苇卡瑞: 一部分excel工作表函数可以直接在VBA中调用如myData=Application.WorksheetFunction.Count(Range(A2:D5))相当于Excel中=Count(A2:D5)的结果.另一部分与一些变化不可以直接调用如Excel中的=IF()函数,在VBA中用IIF函数还有一些函数如=row()VBA中变为.row属性有的函数在VBA中没有

福田区15543386354: VBA问题:如何调用函数 -
淳苇卡瑞: Private Sub Workbook_Open() '直接调用函数AA就可以了 range("A1")=AA End Sub

福田区15543386354: 请教一个关于excel中vba函数使用的问题 -
淳苇卡瑞: 1、在excel中的vba里使用内置vba函数的使用方法:调用Application对象的WorksheetFunction属性.示例: 本示例对单元格区域 A1:A10 使用 Min 工作表函数,并显示结果. Set myRange = Worksheets("Sheet1").Range("A1:C10") ...

福田区15543386354: VBA,CallByName能不能调用公共的函数或过程 -
淳苇卡瑞: 对于自己定义的函数,用Call调用,Call "函数名".CallByName 函数,执行一个对象的方法,或者设置或返回一个对象的属性.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网