VBA代码的几种简单入门实例

vba属于VB语言下的子类,归结起来是比较简单也容易上手,它是基于应用程序自动化的编程语言,用来扩展应用程式功能,主要应用于软件自动化,使软件的功能得到扩展,完成一些软件自身无法完成的工作,特别是office这类办公软件。

下面收集整理了一些初学VBA时的一些入门级简单代码,有注释了语句的作用和效果,特别容易理解上手。

建立登陆框及提示密码录入次数

Sub test()
Dim pas, i          
For i = 3 To 1 Step -1   '步长值,从小到大循环用正值,从大到小用负值   
pas = InputBox("请输入密码")
if pas = "123" Then
MsgBox "密码正确,登陆成功!"
Exit For
Else
MsgBox "你还有" & i & "次机会!"
End If
Next i
End Sub

for语句循环密码登陆验证

Sub 密码验证()  'for循环语句   for...next for...exit for
Dim num%
For num = 3 To 1 Step -1    'step是步长的意思,当从大到小循环时要用负数,反之正数
If InputBox("请输入密码!") = "123" Then   'InputBox是输入框
MsgBox "密码正确,登陆成功!"       'MsgBox是消息框
Exit For
Else
MsgBox num
End If
Next num
End Sub

用VBA代码在EXCEL表上建立乘法口诀表

Sub 乘法表()
Dim num1%, num2%
For num1 = 1 To 9
For num2 = 1 To 9
If num2 > num1 Then    '当num2大于num1时退出for,否则cells的单元格继续语句
Exit For
Else
Cells(num1, num2) = num2 & "×" & num1 & "=" & num1 * num2
End If
Next num2
Next num1
End Sub

乘法表的另一种写法

Sub 乘法表1()          '与上句反思路实现
Dim num1%, num2
For num1 = 1 To 9
For num2 = 1 To num1
If num2 <= num1 Then
Cells(num1, num2) = num2 & "×" & num1 & "=" & num1 * num2
End If
Next num2
Next num1
End Sub

for...each next...集合的循环

Sub each循环()    
Dim wb As Workbook, ws As Worksheet, rng As Range         
'声明wb是workbook(指打开的所有工作薄),ws是这个指定的工作表中,rng是在range指定的单元格区域
For Each wb In Workbooks     '本句是指wb赋值在这个workbook里
  MsgBox wb.Name              '消息框显示wb所在的工作薄名字
Next wb

For Each ws In Worksheets     '循环当前工作薄下所有工作表
  MsgBox ws.Name         '消息框显示循环出来的工作表名字
Next ws

For Each rng In Range("a1:c3")   '循环A1到C3单元格
  MsgBox rng.address & "=" & rng.Value  '消息框循环rng区域单元格元的地址和值
Next rng
End Sub

offset偏移,在D列计算业务提成

Sub 计算提成()
Dim rng As Range
For Each rng In [b2:b9]    '循环B2到B9的单元格
rng.Offset(0, 1) = rng.Value * 0.1 'rng的单元格元用offset函数偏一列,offset(行,列)可以用正负数表示偏移位置
Next rng
End Sub

新建工作表并命名

Sub 工作表()
Dim ws As Worksheet           '声明ws在这个工作薄中
For Each ws In Worksheets      '用foreach在这个工作薄中循环ws
  If ws.Name = "财务部" Then End    '如果ws中存在有财务部这个名字则退出整个语句
Next ws                              '否则继续ws语句
Worksheets.Add.Name = "财务部"      '新加一个财务部的工作表
End Sub

do...loop语法运用

Sub doloop运用方法()     'do...loop无限循环,可用于累加数的做法
Dim number%
Do
number = number + 1   '无限从0开始循环并累加1
If number < 6 Then    '如果number小于6时继续下行语句
  MsgBox number - 1    '将上行累加的结果赋值给自已,然后减掉一,消息框弹出
Else
Exit Do                '当number大于6时退出do循环
End If
Loop
End Sub

do...loop循环用法实例应用

Sub doloop计算金额()     '上例的do...loop的实例应用
Dim ros%                ' ros是代表行号
ros = 1                '不赋值的话是从0开始,表头是产品单价等,不适用,也可以在下行中直接用ros+1来表示行号
Do                     '开始do循环
ros = ros + 1
If Cells(ros, "a") = "" Then    '判断如果A列某行空时退出do循环
Exit Do
Else                            '否则继续下行语句
Cells(ros, "d") = Cells(ros, "b") * Cells(ros, "c")    '将上述do循环出来的ros为行号,将B列和C列的值在D列进行计算
End If                           '满足row为空时退出if循环
Loop
End Sub

until与while语法

Sub until与while测试()        'until 直到条件成立时,停止循环;while是当条件成立时,开始循环
Dim number%
Do Until number > 5      '当number大于5时退出do循环,否则继续下行语句,用while则相反
 number = number + 1
 MsgBox number
 Loop                    'until与while可以写在do后面,也可以写在loop后面
End Sub

until与while语法实例1

Sub until与while计算金额1()
Dim number%
number = 1
Do Until Cells(number + 1, 2) = ""  '如果变量+1行2例不为空
number = number + 1
'Cells(2, 2).Offset(0, 2) = Cells(2, 2) * Cells(2, 2).Offset(0, 1) 
'单元格2行2列偏移0行2例(即D2单元格)=2行2例乘2行2列偏移0行1例
Cells(number, 2).Offset(0, 2) = Cells(number, 2) * Cells(number, 2).Offset(0, 1)    '对上行语句的do循环
Loop
End Sub

until与while语法实例2

Sub until与while计算金额2()
Dim number%
number = 1
Do While Cells(number + 1, 2) <> ""
'如果变量行2例不为空,与上例同效果不同写法
number = number + 1
'Cells(2, 2).Offset(0, 2) = Cells(2, 2) * Cells(2, 2).Offset(0, 1)
'单元格2行2列偏移0行2例(即D2单元格)=2行2例乘2行2列偏移0行1例
Cells(number, 2).Offset(0, 2) = Cells(number, 2) * Cells(number, 2).Offset(0, 1)    '对上行语句的do循环
Loop
End Sub
日ri记ji坊fang. com
打赏
转载请注明出处;
本文地址:https://rijifang.com/index.php/post/15186.html
相关热文

发表评论: