vba显示类型声明字符与声明的vba数据类型转换不符?

在编写程序时,少不了要使用变量和常量,它们都是程序中很重要的元素,是组织程序的基础。

下面是一个简单的VBA程序,用来计算半径为5的圆的面积。

‘ 计算半径为5的圆的面积

其中,r和area就是变量,PI就是常量。

变量就是在计算机中根据其数据类型预先占用一个位置,在这个位置里可以放置相应的数据。换句话说,我们要在计算机中保存数据,就要有相应的空间,变量就是用来指明这些空间的。

我们可以将值存储在变量中,供程序使用,如下图1所示。

注意,如果将另一个值放入已经存在值的变量中,那么原值就被新值所取代。

在程序中,我们经常会使用多个变量。这样,就需要给变量起不同的名字,以区分这些变量,例如图1中的r就是一个变量的名字。

VBA规定了变量名的命名规则:

可以使用字母、数字和下划线,但必须以字母开头。

变量名最长不可以超过255个字符。

变量名不能与VBA保留字同名,不能与VBA中的函数、语句和方法同名。

变量名中不能使用空格和句点。

这就说明,我们在命名变量名称时:

不能以数字或下划线开头。

不能在变量名中使用特殊类型的声明字符(#、$、%、&或!)。

不能在变量名中使用运算符(+、-、*、/、<、>、、.、,、:)。

下列字符也不能使用(?、=、”、;、`、@、^)。

在同一作用域内不能有相同的名字。

在前一篇中,我们过程序中的各种数据都有自已的数据类型(例如整型、字符串型、布尔型等),变量也有自已的数据类型。

在定义变量时,通常要说明变量要存储什么数据类型的值。也就是说,创建变量后,也决定了存储在该变量中的值的数据类型。

定义变量时,指定变量r存放Integer型的数据,而变量area存放Double型的数据。

说明:与很多编程语言不同,VBA比较特殊,它在定义变量时,并不一定需要声明存储在变量中的数据类型。VBA可以自动处理运用数据时涉及到的细节,这对程序编写来说的确很省事,但你会发现,这样的程序执行的速度会更慢,使用内存的效率也不高。如果我们在定义变量时严格指明该变量的数据类型,那么不仅能有效利用计算机空间,并且该变量在进行数据类型转换时,计算机会自动告诉你发生的问题。

如上所述,示例中已经给出了声明变量的方法,即使用Dim语句来对变量进行声明(或定义)。声明变量的一般语法结构是:

当然,还可以使用Public来声明一个公有变量。正如前面所说的,你可以省略掉As及之后的数据类型来声明变量,让VBA自已处理数据,但这并不会带来多少好处。

确切地说,当省略数据类型时,VBA会使用默认的数据类型Variant,在程序处理过程中,会根据所处理内容来改变变量的数据类型。

说明:VBA中“古老的”声明变量的方法

VBA也延续了BASIC定义变量数据类型的方法,即将一个字符加到变量名称后面来指定变量的数据类型,例如:

将变量r声明为整型。下表列出了有类型声明字符的VBA数据类型。

Single(单精度浮点型)!

Double(双精度浮点型)#

在程序中,如果我们处理的某些数据从不会改变,那么我们可以将它们定义成常量,即决不会发生改变的数值或字符串。

VBA规定使用Const语句来声明常量。例如本文开头示例中的:

定义了一个名为PI的常量,它的值是3.1415926,在程序中使用该常量,其值不会发生变化。我们没有指明PI的数据类型,VBA会根据它的值确定数据类型,PI的数据类型是Double型。当然,我们可以在声明的同时明确指定常量的数据类型:

定义了常量之后,如果要在程序中修改它的值,例如给常量赋新值,将会产生错误。和变量一样,也可以在前面添加Public来声明一个公有常量。

在程序中,将多处使用的值声明为常量,至少有两大好处:

如果要修改值,只需手动修改常量定义即可,不必到多个地方修改同一值,不仅繁锁,也容易遗漏。

给常量起一个好的名字,能够清楚地表明其意图,让代码更具可读性。

除了我们定义的常量外,VBA还提供了很多预定义的常量,这些常量不用明确声明就可使用。VBA预定义的常量通常以“xl”或“vb”开头。

| ,实现图像采集等操作.最为关键的部分在于可以实现摄像头的控制,同时关于视频采集进行了实现. 具体的内容请关注首发于51CTO的课程<基于Csh ...

    014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指南 ...

    新阁教育-喜科堂付工原创 最近很多小伙伴对一维码.二维码比较感兴趣,今天主要给大家分享一个C#生成条形码和二维码的案例. C#作为一个高级语言,特点就是快! 我们使用的是开源库ZXing,ZXing是 ...

    今天这一篇博客讲的是.net core 自带的kestrel server,当你开发微服务k8s部署在linux环境下,一般默认开启这个高性能服务,如果大家之前看过我的owin katana的博客,会 ...

    前言 在 2021 年这个小学作文中的未来年份,没有想象中的汽车满天飞,也没有实现机器人满地跑.但牛逼的是我们都有一个共识: 知乎达到了人均 "谢邀~ 人在美国刚下飞机"的生活水平 ...

    基于MATLAB的手写公式识别 总结一下昨天一天的工作成果: 获得了大致的识别过程. 一个图像从生肉到可以被处理需要经过预处理(灰质化.增加对比度.中值过滤.膨胀或腐蚀.闭环运算). 掌握了相关函数的 ...

我要回帖

更多关于 vba数据类型转换 的文章

 

随机推荐