计算面积 子过程
Private Sub Command1_Click()
area Text1.Text, Text2.Text
End Sub
Private Sub area(length, width)
Label1.Caption = length * width
End Sub
按值传递参数
Private Sub test(ByVal a As Integer, ByVal b As Integer)
a = a + 20: b = b + 10
Print "a=" & a, "b=" & b
End Sub
Private Sub command1_click()
Dim num1 As Integer, num2 As Integer
num1 = 10: num2 = 10
Print "num1=" & num2, "num2=" & num2
Call test(num1, num2)
Print "num1=" & num1, "num2=" & num2
End Sub
按地址传递参数
Private Sub test(a As Integer,b As Integer)
a = a + 20: b = b + 10
Print "a=" & a, "b=" & b
End Sub
Private Sub command1_click()
Dim num1 As Integer, num2 As Integer
num1 = 10: num2 = 10
Print "num1=" & num2, "num2=" & num2
Call test(num1, num2)
Print "num1=" & num1, "num2=" & num2
End Sub
数组参数
Private Function average(age() As Integer, n As Integer) As Integer
Dim i As Integer, aver As Integer, sum As Integer
For i = 0 To n - 1
sum = sum + age(i)
Next i
aver = sum / n
average = aver
End Function
Private Sub command1_click()
Dim employees() As Integer
ReDim employees(6)
For i = 0 To 5
employees(i) = InputBox("请输入第" & CStr(i + 1) & "个员工年龄.", , "输入")
Text1 = Text1.Text & "第" & CStr(i + 1) & "个员工年龄为:" & employees(i) & Chr(13)
Next i
Text2 = average(employees, 6)
End Sub
对象参数
Private Sub objectena(obj1 As Object, obj2 As Object)
obj1.Enabled = False
obj2.Enabled = False
End Sub
Private Sub form_load()
objectena Text1, Command1
End Sub
嵌套过程实现数据排序的实例
Private Sub numbers_change(a, b)
Dim num1 As Integer
num1 = a: a = b: b = num1
End Sub
Private Sub numbers_sort(arr As Variant)
Dim l As Long, i As Long, j As Long
For i = 0 To UBound(arr)
For j = i + 1 To UBound(arr)
If arr(j) < arr(i) Then
Call numbers_change(arr(j), arr(i))
End If
Next j
Next i
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
Private Sub form_load()
Dim myarr
myarr = Array(89, 79, 123, 5, 78)
Call numbers_sort(myarr)
End Sub
按F8键,通过单步调试,可以看清程序执行过程。
递归
Function f(n As Integer) As Single
If n > 1 And n <= 30 Then
f = n * f(n - 1)
Else
f = 1
End If
End Function
Private Sub command1_click()
Text2.Text = f(Val(Text1.Text))
End Sub
使用Property Let 过程和Property Get过程简历Class1类的标记属性。
Private i As Integer
Public Property Let mark(ByVal newvalue As Integer)
i = newvalue
End Property
Public Property Get mark() As Integer
mark = i
End Property
利用子过程或函数过程,求1-5的阶乘。(修改为输入不大于30的数值)
Function f(n As Integer) As Single
If n > 0 And n <= 30 Then
f = n * f(n - 1)
Else
f = 1
End If
End Function
Private Sub Command1_Click()
Text1.Text = InputBox("请输入您需要的阶乘", , "")
Text2.Text = f(Val(Text1.Text))
End Sub
第一年在银行存款230元,以后每年存230元,用递归方法计算50年后存款总额。(修改自行输入存款金额和存款年限)
Private Function f(n As Long, j As Long)
f = n * j
End Function
Private Sub Command1_Click()
Text1.Text = InputBox("请输入存款金额", , "")
Text2.Text = InputBox("请输入存款年限", , "")
Label1.Caption = f(Val(Text1.Text), Val(Text2.Text))
End Sub
获取字符串长度
Function Clen(ByVal mystr As String) As Integer
Clen = LenB(StrConv(mystr, vbFromUnicode))
End Function
Private Sub Command1_Click()
MsgBox "字符串长度为:" & Clen(Text1.Text)
End Sub