执行代码时,是从 第1行执行到最后1行,这就是程序,按照顺序执行,而下面的语句可以改变代码执行的位置,才使程序有了灵魂,好像有“智能”一样,虽然这个“智能”是代码设定好的,但也让大家把计算机称为电脑。
if ... Then 条件分支语句
根据条件判断,然后执行相关代码
Dim aa As Long = 100
If aa = 100 Then
Print "aa=100"
Else
Print "aa<>100"
End If
如果执行的代码就一行的,我们可以用单行模式
Dim aa As Long = 100
If aa = 100 Then Print "aa=100" Else Print "aa<>100"
还可以多个条件判断
Dim aa As Long = 100
If aa = 100 Then
Print "aa=100"
ElseIf aa = 50 Then
Print "aa=50"
ElseIf aa = 60 Then
Print "aa=60"
Else
Print "其它情况"
End If
还有多条件判断
Dim aa As Long = 100, bb As Long = 50
If aa = 100 Or bb = 50 Then Print "aa=100 或者 bb=50"
If ... Then 之间,属于条件判断,也可以进行逻辑判断,还可以写复杂的表达式
If 123*58+55= 33 And 1/55<>rnd Then ****
其中涉及到的 +-*/ 算术运算符,And Or 等逻辑运算符,请参考运算符篇
多条件选择 Select
某些特殊的多条件,使用 if ... Then 的代码比较麻烦,因此在这个基础上扩展出 Select 语句
'If...Then 的写法
If aa = 1 Then
Print 1
ElseIf aa = 2 Then
Print 2
ElseIf aa = 3 Then
Print 3
Else
Print 4
End If
'Select 的写法,和 If...Then 功能相同,但Select人类看代码比较舒服。
Select Case aa
Case 1
Print 1
Case 2
Print 2
Case 3
Print 3
Case Else
Print 4
End Select
还有特殊写法
Select Case aa
Case 1, 3, 4 '多个条件写法
Print 1
Case 2 : Print 2 '单行写法
Case 3 To 10 '范围写法
Print 3
End Select
For..Next 范围循环
有些代码,需要重复执行,就会用到循环语句
Dim i As Long
For i = 1 To 10 '表示 i 从 1 开始 ,循环到 10 ,i 值每循环1次增加 1
Print i '循环执行的代码
Next
循环还可以指定每次增加的量
Dim i As Long
For i = 1 To 10 Step 2 '表示 i 从 1 开始 ,循环到 10 ,i 值每循环1次增加 2
Print i '循环执行的代码
Next
结果:1,3,5,7,9
还可以从大到小循环
Dim i As Long
For i = 10 To 1 Step -1 '从10开始,循环到1,每次 -1
Print i
Next
循环变量,可以直接写在循环语句里,不需要Dim 定义
For i As Long = 10 To 1 Step -1
Print i
Next
有时候需要根据条件,直接退出循环
For i As Long = 10 To 1 Step -1
If i = 5 Then Exit For '条件成立,跳出循环,跳到 Next 的下一行执行
Print i
Next
假如有多循环嵌套,退出循环还可以跳出N层循环
For y As Long = 1 To 5
For x As Long = 1 To 3
If x = 3 And y = 3 Then Exit For, For '条件成立,跳出多层嵌套循环
Print x,y
Next
Next
有时候,还可以根据条件,直接进入下一个循环
For i As Long = 10 To 1 Step -1
If i = 5 Then Continue For '条件成立,跳到循环头 For 执行
Print i
Next
Do..Loop 无限循环
这是无限循环,循环到天荒地老,表现为软件无反应,CPU占用高
Dim i as long
Do
i += 1 '无限执行到天荒地老
Loop
因此,我们必须搞个条件,达到条件退出循环,但你必须要预计到,条件肯定有成立的时候,不然永不成立,就变成无限循环了,执行到天荒地老
Dim i As Long
Do
i += 1
If i > 100 Then Exit Do '超过100就退出
Loop
条件可以直接和 Do 结合,条件成立退出循环
Dim i As Long
Do Until i>10 '条件成立就10退出循环
i += 1
Loop
条件可以直接和 Do 结合,条件成立,执行循环,条件不成立,退出循环
Dim i As Long
Do While i < 10 '条件成立执行循环,条件不成立退出循环
i += 1
Print i
Loop
以上是先判断条件,还有和 Loop 结合,先循环后条件。
Dim i As Long
Do
i += 1
Loop Until i > 10 '条件成立退出循环
Do
i += 1
Loop While i < 10 '条件成立执行循环,条件不成立退出循环
本循环,也有跳过本循环语句
Dim i As Long
Do
i += 1
If i=5 Then Continue Do '跳到DO头执行
Loop Until i > 10 '条件成立退出循环
还有,多嵌套DO循环时,退出N个 DO 循环
Dim i As Long
Do
Do
Do
i += 1
If i = 5 Then Exit Do, Do, Do '跳到多个do循环
Loop
loop
Loop
While..Wend 条件循环
本循环和 Do While 语句一样功能,看自己喜欢用什么语句就用什么
Dim i As Long
While i < 5
i+=1
Wend
当然该循环也有退出循环和跳到循环头的语句
Exit While '退出循环
Continue While '跳到循环头
子程序
当代码越写越多,就会让整体代码越难阅读和管理,我们需要有章有节,那样条理分明。
编程中的子程序(Subroutine)或函数(Function)是编程中非常重要的一部分,它们帮助你将代码分割成可管理、可重用的部分。这不仅能提高代码的可读性,还能减少代码冗余,使得程序更容易维护和修改。下面我将通过一些基本的概念和示例来介绍子程序的概念和使用。
1. 子程序的基本概念
- 函数(Function):一个具有特定功能的代码块,可以接收输入参数,执行一系列操作,并返回一个值给调用者。
- 子程序(Subroutine)或过程(Procedure):与函数类似,但它不返回任何值给调用者。主要用于执行一系列操作。
2. 为什么要使用子程序
- 模块化:将复杂的问题分解为较小的、易于管理的部分。
- 重用性:避免重复编写相同的代码。
- 可读性:使得代码更易于理解和维护。
- 易于调试:当出现问题时,可以更容易地定位到特定的子程序。
3. 编写子程序的基本步骤
3.1 定义子程序
- 函数:通常包括返回类型、函数名、参数列表(可选)和函数体。
- 子程序:包括子程序名、参数列表(可选)和子程序体。
3.2 编写子程序体
在子程序体内,你可以编写执行特定任务的代码。对于函数,你需要确保最后有一个返回语句,以返回适当类型的值。
3.3 调用子程序
在程序的其他部分,你可以通过指定子程序名(和必要的参数)来调用它。
4. 示例
Sub 我的子程序() ’ 这是子程序头
Print "执行子程序"
End Sub '这是子程序尾
我的子程序() ‘ 直接写 子程序的名称来调用执行子程序
子程序可以设置参数,我们调用时传递参数给子程序
Sub 我的子程序(参数1 As Long )
Print "执行子程序",参数1
End Sub
我的子程序(99)
子程序可以提前结束,用 Return 直接返回
Sub 我的子程序(参数1 As Long)
If 参数1 = 99 Then Return
Print "执行子程序", 参数1
End Sub
我的子程序(99)
当子程序要返回数据时,就称为“函数”,和普通子程序不同于,它会返回数据
Function 我的子程序函数() As Long
Return 10
End Function
Print 我的子程序函数()
下面我们写一个加法函数
Function 我的加法函数(aa As Long ,bb As Long ) As Long
Return aa+bb
End Function
Print 我的加法函数(5,10)
当传递的参数,在子程序中被修改,影响到调用者
Sub 我的子程序(数值参数 As Long,文字参数 As String )
数值参数 = 100
文字参数 ="1111"
End Sub
Dim aa As Long=11, bb As String ="内容"
我的子程序(aa, bb)
Print aa,bb
'打印后会发现,数值内容没变,文字内容变了,
当你需要明确,修改变量后不影响调用的变量,和一定要影响
ByRef 影响调用者
ByVal 不影响调用者
Sub 我的子程序(ByRef 数值参数 As Long,ByVal 文字参数 As String )
数值参数 = 100
文字参数 ="1111"
End Sub
Dim aa As Long=11, bb As String ="内容"
我的子程序(aa, bb)
Print aa,bb
传递数组时,必须写上 () 来表示数组,数组必然影响调用者,无法使用不影响的
Sub 我的子程序(数组参数() As Long)
Print 数组参数(0)
End Sub
Dim aa(100) As Long
数组参数(0)=99
我的子程序(aa())
评论一下?