vba7-16

本文详细介绍了VBA中的数据类型,包括默认的变体型、整数型、小数型,强调了变体型的优缺点。同时,讨论了算术表达式、字符串连接、布尔类型比较以及强制数据类型转换,特别是Val函数的使用。还涵盖了日期型数据的处理,以及隐式变量声明可能带来的溢出问题。

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

七变体型类型
1默认数据类型:变体型,可以是任何类型
2Dim 变量名 没有指定数据类型,就是默认的
3赋值 =
4优点:不用考虑声明变量的数据类型,任何数据都可以装载。对新手相当友好
缺点,消耗系统资源过大。造成程序的执行效率低下

八整数类型小数类型
1数值:整数小数(浮点数)
2整数类型:
整型:Integer -32768------32767之间
Dim 变量名 as integer
长整型:Long 正负20亿
3小数类型:
双精度浮点型:Double 最多支持15位有效数字
dim 可以在一行声明多个变量,中间用逗号分隔开
& 连接字符串和数值
4赋值是覆盖操作

九算术表达式与数学混合运算
1 加+ 减- 乘* 除/ 求余数mod 整除\四舍六入
2 当混合数据类型发生运算,结果的数据类型向较大的数据进行转换
3 在注意数值的溢出

十 字符串变量与vb妈妈机制
1字符串类型string
dim 变量名 as string
2定长字符串 变长字符串,通常都是变长
3字符串连接 & 前后都有空格
对数字的连接,自动转换为字符串类
4输入的语句:inputbox(“提示”)
5 ctrl +j 能联想语言
6数值类型与字符串类型的类型互换
●数值类型可以直接自动转换成为字符串类型
●字符串类型如果完全由数字构成,可以自动转成数值类型
●字符串类型如果包含非数字的部分,则无法自动转换成数值,会报类型错误。
7vb容错机制:一般尽可能少的报错
比如:3 和"3"一样,
“3”*4   都可容错

十一 强制数据类型转换与val函数
1内置数据转换函数
 a内置函数 b自定义函数 c工作表函数
2强制类型转换函数 val 将字符串转换成数字
a.如果该字符串就是数字字符组成的,则自动转换
b.如果该字符串完全是由非数字组成,强制转成0
c.如果字符串有数字有非数字字符,看数字的位置,如果数字在开头位置,直接转成该数字,如果开头位置不是数字,转成0
a=val(“12dsaf”)—12

十二认识布尔类型比较表达式与逻辑表达式
1两个值:True False
2数值之间的比较运算结果就是布尔值:大于 小于 大于等于 小于等于 等于= 不等于<>
3要分清楚赋值的=和比较运算符的=
a、看语句开头是否就是一个变量名,如果就是一个变量名,那么它后面的等号一定是赋值号
b、如果=前的变量不是语句开头,那么就是判断相等的符号
4逻辑表达式: and or not
5定义布尔类型
dim 变量名 as boolean
6三大表达式与运算优先级
算术表达式>比较表达式>逻辑表达式>赋值
小括号括起来的最优先。

十三 布尔运算真值表短路原则
1not运算
and运算,可类比为乘法 False为0 True为1
or运算,可类比为加法 False为0 True为1
2短路机制
a 当运算and,只要有一个值是False,其结果一定是False,因此只要发现一个False,后面的表达式还有再多的布尔值都不再运算,直接给结果False。
b当运算Or也是相同的道理,当发现参与运算的布尔值有一个值是True的时候立刻激活
短路机制,不再运算后面的内容,直接给结果为True。

十四 数值型字符串型变量作业讲解

Sub 作业1_计算年龄的秒数()
    Dim 姓名 As String, 年龄 As Long, 秒数 As Double
    姓名 = InputBox("请输入您的姓名")
    年龄 = InputBox("请输入您的年龄")
    秒数 = 年龄 * 3.14 * 10 ^ 7
   MsgBox 姓名 & "已经在人间活了" & 秒数 & "秒。"
 End Sub
Sub 作业2_计算圆的周长与面积()
    Dim r As Double '半径
'    Dim area As Double, zhouchang As Double
    r = InputBox("请输入要计算的园的半径")
'    area = 3.14 * r * r
'    zhouchang = 3.14 * r * 2
    MsgBox "圆的面积是" & 3.14 * r * r & " 圆的周长是" & 3.14 * r * 2
End Sub

十五 日期型数据类型变量

1日期型本质是小数类型,是特殊的运算
2声明:
dim 变量名 as date
date 返回当前日期
如:
dim d as date
d=date
msgbox d
'显示当前日期
time 返回当前时间,同上

'日期型变量的声明
Sub 日期型变量()
    Dim date1 As Date '代表数据类型
    date1 = Date
    MsgBox date1 'VBA 中内置的一个日期型的常量,永远返回今天的日期
    'Time 返回当前的系统时间
    date1 = Time
    MsgBox date1
End Sub

3日期型值前后要加#,比如:
#2020-10-1#可运算,如:
msgbox-#2020-1-1# 可得到今年过了多少天
cint 强制转换成integer
clng 强制转换成long
cdbl 强制转换成double
cbool 强制转换成布尔
cdate 强制转换成日期

Sub 简单的日期型常量运算()
MsgBox Date - #1/1/2018# + 1
End Sub

Sub 强制日期类型转换()
    Dim date1 As Date
'    MsgBox Range("b1") - Range("a1")
    date1 = Range("a1") '将一个变体的类型中包含日期字符串的数据赋值给一个日期型变量
                        'VB 妈妈会自动进行类型转换
                        'Cdate C--Change 改成日期类型

    MsgBox CDate(Range("a1"))
End Sub

十六隐式变量声明与常数溢出问题
1日期型补充
时间戳:1970-1-1 0分0秒 大部分都是
excel的时间戳:1900-1-1 0分0秒

隐式变量声明 赋值的时候同时开辟一个变体类型的空间变量
'1、全部变量都是变体类型造成程序资源消耗较大,执行效率较低
'2、无法提醒用错变量名的情况,造成程序调试难度增加

Sub 声明的例子()
    Dim date1 As Date
    date1 = Date
    MsgBox Data1 - #1/1/1900#
End Sub

2可以不声明变量,叫做隐式声明变量,也叫动态声明变量的方法,即赋值就是声明。
但vba实现这种动态的变量声明不成熟,不推荐使用。
3常数溢出,如

Sub VBA常数溢出()
    '历史问题,80-90年代,98年出的,语法停留在98年
    'Integer 默认的整数类型
    '相同数据类型的运算,开的空间也是Integer
    Dim result As Long
    result = 64 * 64 * 64#
    MsgBox result
End Sub

虽然是长整型,但仍然会溢出。这是历史问题,80-90年代
默认都是Integer型
解决方式:在最后一个数加# ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值