vba17-25

本文介绍了VBA中的变量默认值,如整型默认为0,字符串为"",布尔型为False,变体为Empty。简写变量声明包括:%用于整型,&用于长整型,#用于小数,$用于字符串。常量声明使用`Const`关键字,赋值后不可更改。此外,文章还讲解了判断闰年的规则,并深入探讨了VBA中的分支结构,包括单分支、双分支、多分支以及if语句的嵌套使用,最后提到了`Select Case`语句的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十七 变量默认值 简写变量 常量

1声明变量的同时赋值:
数值:0 字符串:"“空字符串 布尔:False 变体:Empty(空)
2 布尔值:false(0) True(1)
所有非0的数字转换成布尔类型都是True
3变量定义简写
dim i % integer整型
dim j& long长整型
#double 小数
$ string 字符串
常数后面加符号,改变常数数据类型
Date Boolean 没有简写
'VBA 声明变量 同时根据变量的数据类型,系统会自动给变量赋初值。
'1、如果声明的变量是数值类型的:整数类型 0 小数类型 0.0
'2. 字符串类型:”" 空字符串
'3. 布尔类型 False
'4. 变体类型 Empty – 空的意思

'布尔类型转成数字没有意义的: False —>0 True —>-1
'所有的非0 的数字都可以转成布尔类型的True 非空的字符串
'VBA 的变量声明的简写方式
'dim 变量名 as 数据类型
'Dim 变量名简写符号

Sub 变量声明的简写()
    Dim i% '==== dim i as integer
    Dim j& '==== dim j as long
    Dim d# '===== dim d as double
    Dim s$ '===== dim s as string
    Dim b As Boolean '没有简写符号
    Dim date1 As Date
    '把常数后面跟上简写符号,改变了常数数据类型
    MsgBox 64 * 64 * 64&
End Sub

'常量:一些表述公理定理常数的量,不变的量。
'特点:一经声明同时进行赋值,然后就不可以在程序中再被赋值改变。
'常量的声明 Const

Sub 求圆面积()
    '3.14115926536
    Dim r As Double
    Const Pi As Double = 3.14115926536
    r = 2.1
    MsgBox Pi * r ^ 2
End Sub

4 常量声明:一经赋值在程序中不可改变,声明同时赋值

Const Pi as double=3.1415926

十八 判断是否闰年
规则:
1 被4整除,又不能被100整除
2 400的倍数是闰年
3以上两点满足其一
条件:(year mod 4 =0 and year mod <>0) or (year mod 400 =0)

Sub 判断闰年()
    Dim inputYear&, b1 As Boolean
    inputYear = InputBox("请输入一个年份")
    'inputyear mod 4 = 0
    'inputyear mod 100 <> 0
    '1*1
    b1 = (inputYear Mod 4 = 0 And inputYear Mod 100 <> 0) Or (inputYear Mod 400 = 0)
    MsgBox IIf(b1, inputYear & "年,是闰年", inputYear & "年, 是平年")
    'iif 内置函数就完成了一个是否判断 与工作表函数中的if 函数非常类似
End Sub

十九 分支结构
1 三目运算符 vba 没有,有iif函数
iif(布尔值,真语句,假语句)
2 单分支结构
第一种:
if 条件 then 语句
第二种:
if 条件 then
语句
end if

'基本的if 语句的语法:
'if 条件 then 处理语句 '仅限于单分支
'if 条件 Then '后面不跟着处理语句 'if 的结构
'xxxx 处理语句
'yyyy
'zzzz
'End if

Sub 码农买瓜()
    Dim 卖瓜的 As Boolean
    MsgBox "码农买了一斤包子做晚餐"
    卖瓜的 = False
    If 卖瓜的 Then
        MsgBox "码农买了一个西瓜"
    End If
    MsgBox "码农回家了"
End Sub

二十 双分支,多分支结构
1 双分支:
if 条件 then
成立时语句
else
不成立时语句
end if

'双分支结构(是否结构)
Sub 小明买鸡蛋()
    Dim 坏蛋 As Long
    坏蛋 = InputBox("请输入小明的坏鸡蛋数")
    If 坏蛋 <= 5 Then '是的分支
        MsgBox "小明做了一盘炒鸡蛋,给吃了。"
    Else   '否的分支
        MsgBox "小明拎着鸡蛋找卖鸡蛋的干仗去了。"
    End If
End Sub

2 多分支:
if 条件1 then
语句1
elseif 条件2 then
语句2
elseif 条件n then
语句n
else
语句m
end if
'多分支练习题

Sub 学生成绩的统计()
    Dim score As Long
    score = InputBox("请输入学生成绩")
    
    If score >= 90 Then
        MsgBox "该生是优秀学生"
    ElseIf score >= 80 Then '否则如果
        MsgBox "该生是良好学生"
    ElseIf score >= 60 Then
        MsgBox "该生是合格学生"
   
    Else
        MsgBox "该生是不及格学生"
    End If
End Sub

二十一 if 语句嵌套
1语法
if 条件1 then
if 条件2 then
语句…
end if
else
语句…
end if

'所谓if 语句嵌套,就是在if 的某一个分支里嵌入一个完整的if 语句
'模拟登录的程序
'要求:必须用户名="小明" 如果不是就输出"用户名非法" 结束
'如果是"小明" 要求输入密码,如果密码="888888" 就输出登录成功,否则就输出密码错误
'VBE 的单步调试功能
'黄色箭头指向的是即将执行的语句
Sub 模拟登录()
    Dim userName As String, password As String
    userName = InputBox("请输入用户名")
    If userName = "小明" Then
        password = InputBox("请输入登录密码")
        If password = "888888" Then
            MsgBox "欢迎登录本系统"
        Else
            MsgBox "密码错误,登录失败"
        End If
    Else
        MsgBox "用户名输入非法"
      End If
End Sub

2 单步调试:F8

'三数求最大:输入a,b,c 3个数要求得到最大值
' 假如 a>b -> a 和c 比 a>c ->a 最大
'       a>b-> a<c -> c 最大
Sub 三数求最大()
    Dim a&, b&, c&
    a = InputBox("请输入第一个数字")
    b = InputBox("请输入第二数字")
    c = InputBox("请输入第三个数字")
  If a >= b Then
        If a >= c Then
            MsgBox "a 是最大值, a=" & a
        Else
            MsgBox "c 是最大值,  c=" & c
        End If
 Else
        If b >= c Then
            MsgBox "b 是最大值, b=" & b
        Else
            MsgBox "c 是最大值,  c=" & c
        End If
    End If
End Sub

二十二、二十三
练习
猜数游戏 三天打渔两天晒网 学生成绩

二十四 多分支语句
语法:
select case 值|表达式
case 分支1
语句1
case 分支2
语句2
case 分支n
语句n
end select

'Select Case 多分支结构语句
'学生评定:
'输入一个成绩 90及以上优秀80-89良好,60-79 合格,其他不及格
'Select Case 值 或者 表达式
'Case 值 比较 不能跟逻辑运算符
Sub 学生评定()
    Dim score As Long
    score = InputBox("请输入学生成绩")
    Select Case score
    Case Is >= 90
        MsgBox "优秀生"
    Case Is >= 80
        MsgBox "良好生"
    Case Is >= 60
        MsgBox "合格生"
    Case Else
        MsgBox "不及格"
End Select
End Sub
'3,4,5 是春天,6,7,8 是夏天,9,10 是秋天,11,12,1,2 是冬天
Sub 输入月份返回季节()
    Dim inputM As Long
    inputM = Val(InputBox("请输入月份1-12"))
    Select Case inputM
    Case 3, 4, 5
        MsgBox "是春季"
    Case 6, 7, 8
        MsgBox "是夏季"
    Case 9, 10
        MsgBox "是秋季"
    Case 11, 12, 1, 2
        MsgBox "大约在冬季"
    Case Else
        MsgBox "月份输入非法"
    End Select
End Sub

二十五 作业

Sub 猜数游戏雏形()
    Dim num As Long, guess As Long
    num = WorksheetFunction.RandBetween(1, 3)
    guess = InputBox("请输入一个1-3之间的整数:")
    
    If num = guess Then
        MsgBox "猜对了"
    ElseIf guess < num Then
        MsgBox "你猜小了"
    Else
        MsgBox "你猜大了"
    End If
End Sub
Sub 三天打渔两天晒网()
    Dim days As Long, mod5 As Long
    MsgBox Date
    days = Date - #1/1/1990# + 1
    mod5 = days Mod 5
    MsgBox mod5
    If mod5 >= 1 And mod5 <= 3 Then
        MsgBox "今天打渔"
    Else
        MsgBox "今天晒网"
    
    End If
End Sub
'Select Case 多分支作业,李四的工资

Sub 李四的工资()
    Dim basicWage As Long, pingding As String
    basicWage = 5000
    pingding = UCase(InputBox("请输入李四的年终评定")) '必须是大写的A-E,uCase 函数
    Select Case pingding
    Case "A"
        basicWage = basicWage + 800
    Case "B"
        basicWage = basicWage + 500
    Case "C"
        
    Case "D"
        basicWage = basicWage - 200
    Case "E"
        basicWage = basicWage - 500
    Case Else
        MsgBox "你的评定输入有误。"
    End Select
    
    MsgBox "根据年终评定,李四来年的年薪为" & basicWage * 13
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值