- UID
- 113834
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-3-16
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
自定义函数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 |
|