ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2906|回复: 4

[转帖] 关于 VBA变量详解

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-10-22 20:04 | 显示全部楼层 |阅读模式
 变量是用于临时保存数值的地方.每次应用程序运行时,变量可能包含不同的数值,而在程序运行时,变量的数值可以改变.
 为了说明为什么需要变量,可以按照如下步骤创建一个简单的过程:
  1)创建一个名为"你叫什么名字"的过程.
  2)在过程中输入如下代码:
  Inputbox "输入你的名字:"
  现在不要担心inputbox语句的语法,将在第六学时中了解到有关这条命令的更多信息.
  3)按下F5键运行过程,这时会显示一个输入框,要求输入你的名字.
  4)输入你的名字并按"确定"按钮,则结束该过程.
  你输入的名字到那里去了?如何找到用户在输入框中输入的信息?在这种情况下,需要使用变量来存储用户输入的结果.
  4.4.1 变量的数据类型   使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据.表4-1列出了VBA支持的数据类型,还列出了各种类型的变量所需要的存储空间和能够存储的数值范围.
数据类型     存储空间    数值范围
Byte       1字节      0 - 255
Booleam      2字节     True或者False
Integer      2字节     -32768 - 32767
Long(长整型)    4字节    -2147483648 - 2147483647
Single       4字节     负值范围:-3.402823E38 - -1.401298E-45
正值范围:1.401298E-45 - 3.402823E38
Double       8字节    负值范围:-1.79769313486232E308 - -494065645841247E-324
正值范围:4.94065645841247E-324 - 1.79769313486232E308
Currency      8字节    -922337203685477 - 922337203685477
Decimal      14字节    不包括小数时:+/-79228162514264337593543950335
包括小数时:+/7.9228162514264337593543950335
Date       8字节     1000年1月1日 - 9999年12月31日
Object      4字节     任何引用对象
String(长字符串) 10字节+1字节/字符   0 - 约20亿
String(固定长度) 字符串的长度      1 - 约65400
Varient(数字)  16字节         Double范围内的任何数值
Varient(文本)  22字节+1字节/字符    数据范围和变长字符串相同
表4-1 VBA数据类型
  作为ABV程序员,一个目标是选择需要存储空间尽量小的数据类型来保存所需要的数据,这正是表4-1提供各种数据类型存储空间的原因。例如,要保存诸如班级学生总数这样的小数字,那么Byte数据类型就足够了。在这种情况下,使用Single数据类型只是对计算机存储空间的浪费。
  4.4.2 用Dim语句创建变量(声明变量)   现在,你对变量可以使用的数据类型已经比较熟悉了,以下我们将创建变量.创建变量可以使用Dim语句,创建变量通常成为"声明变量" Dim语句的基本语法如下:
  Dim 变量名 AS 数据类型
  这条语法中的变量名代表将要创建的变量名.对变量的命名规则和对过程的命名规则相同.这条语句中的数据类型部分可以是表4-1中的任何一种数据类型.
  变量名必须以字母开始,并且只能包含字母数字和特定的特殊字符,不能包含空格句号惊叹号,也不能包含字符@ & $ #.名字最大长度为255个字符
  在接下来的练习中将说明如何在VBA中使用变量,你将要输入你的名字,并用一个消息框将其显示出来.具体步骤如下:
  1)创建一个名为"显示你的名字"的子程序.
  2)输入以下代码:
  Public Sub 显示你的名字()
  Dim s名字 As String
  s名字 = Inputbox("请输入你的名字:")
  Msgbox "你好"& s名字
  End Sub
  3)将鼠标放到过程中的任何地方,按下F5键运行过程,会显示一个输入框.
  4)输入你自己的名字并按回车键,会显示一个消息框,显示的文字中包含你自己的名字.
  5)单击"确定"按钮,返回过程中.
  在Dim语句中不必提供数据类型.如果没有数据类型,变量将被定义为Variant类型,因为VBA中默认的数据类型是Variant.你知道这一点后,最初的反应也许是觉得应该不用自己决定数据类型,而将一切抛给VBA.这种观念是完全错误的.你必须决定选择使用何种数据类型。因为Variant数据类型占用存储空间较大(16或22字节)而且它将影响程序的性能。VBA必须辨别Variant类型的变量中存储了何种类型的数据。
  4.4.3 变量命名的惯例   下表给出了推荐的变量命名惯例
数据类型    短前缀    长前缀
Array      a      ary
Boolean     f      bin
Byte       b      bit
Currency     c      cur
Double      d      dbl
Date/Time    dt      dtm/dat
Integer     i      int
Long       l      lng
Object      o      obj
Single            sng
String      s      str
Variant     v      var
  表4-2 变量命名的前缀
  4.4.4 使用数组   如果你使用过其他编程序语言,可能对数组已经比较熟悉了.数组是具有相同数据类型并共同享有一个名字的一组变量的集合.数组中的元素通过索引数字加以区分,定义数组的方法如下:
  Dim array_name(n) As type (其中n是数组元素的个数)
  例如,如果要创建保存10个学生名字的数组,可以用以下语句:
       Dim s学生名字(9) As Integer
  注意,括号中的数字是9而不是10.这是因为在默认的情况下,第一个索引数字是0.数组在处理相似信息时非常有用.假设要处理15门考试成绩,可以创建15个独立的变量,这意味着要使用15个Dim语句。也可以创建一个数组来保存考试成绩,具体如下:
  Dim s考试成绩(14) As Integer
  声明数组时的另一种方法是不给定大小。可以在程序运行时定义其大小。通过创建动态数组就可以做到。例如,你的程序要创建一表格,可以提示用户输入表格的行和列的数目。声明动态数组的语法如下:
  Dim dyn_array() As type
  对数组声明后可以在程序运行时用:ReDim语句指定数组的大小:
  ReDim dyn_array()(array_size)
  参数array_size代表数组的新大小。如果要保留数组的数值,请在ReDim语句后使用保留字Preserve,具体语法如下:
  ReDim Preserve dyn_array(array_size)
  4.4.5 变量赋值   声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时索引数字的使用。
  程序清单4-4
  Dim i人数 As Integer
  Dim i考试成绩 As Integer
  Dim i As Integer
  i人数 = inputbox("输入学生的人数:")
  ReDim Preserve i考试成绩(i数量)
  For i = 1 to i人数
  i考试成绩(i) = inputbox("输入考试成绩"& i )

TA的精华主题

TA的得分主题

发表于 2009-10-22 20:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2009-10-22 20:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢美女!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-22 20:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-12-28 09:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-10 11:11 , Processed in 0.040078 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表