找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 338|回复: 0

[VBA程序]:自定义函数

[复制链接]
发表于 2004-3-16 14:42:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
自定义函数3. 自定义函数

    在VBA的整个程序结构中,自定义函数是非常重要且十分方便的工具。

    自定义函数的结构与过程的结构非常相似,只是自定义函数的参数是必不可少的,且具有返回值。其基本结构如下所示:

    Function 〈函数名〉(〈参数1〉,〈参数2〉,…)

   

〈语句块〉

End Function

    下面举例说明用户如何建立自定义函数。

    Excel和Visual Basic都有产生0与1之间随机数的函数。Excel的随机函数RAND( )可用于工作表,而Visual Basic的随机函数Rnd只能用于Visual Baisc宏。现建立一个可随时随地调用,不受上述限制的产生随机数的自定义函数Random。其宏程序如下:

   

Function Random(Optional  Midpoint = 0.5, Optional Range = 0.5, Optional Round = False)

Application.Volatile True

Random = Rnd * (Range * 2) + (Midpoint - Range)

If Round Then

   Random = CLng(Random)

End If

End Function

    其中:

    函数的参数Midpoint、Range、Round描述了随机数区间,依次给出了:区间中点、正负范围、是否对随机数进行四舍五入取整运算。

    函数参数前的关键字Optional设定参数为可选项,参数后用等号给出参数的默认值。

    Application.Volatile True语句使得该函数为易失函数。对于大多数函数,只有当与函数的参数相关联的单元格值改变时,才重新计算。而有些函数(如Excel中的RAND( )函数),只要工作表任何一个单元格的值发生变化或按F9键,便重新计算,具有这种性质的函数称为易失函数。

    函数CLng将一个数舍入成整数,再转换为长整型。

    例如,选定某一单元格,键入下列公式:

    =Random(1000,500,True)

    则在此单元格产生1000-500到1000+500,即500到1500之间的随机整数。

Sub Macro1()

'Sub 打开另一工作薄()

Dim i, j, k As Integer

i = 2 'Target.Row

j = 1 'Target.Column '

k = 2


Dim mySheet As Worksheet

For Each mySheet In Worksheets

mySheet.Select


 

 

 

If mySheet.Name = "Sheet2 " Then

Cells(i, j) = Sheet2.Cells(i, j)

i = i - 1

ElseIf mySheet.Name <> "Sheet2 " Then

Sheet2.Cells(i, j) = Cells(2, 2)

Sheet2.Cells(i, k) = Cells(3, 2)

End If

i = i + 1

Next mySheet


Sheet2.Select

End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-29 11:32 , Processed in 0.351352 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表