【VBA研究】变量定义的类型和实际赋值类型

原创 2015年07月10日 11:52:37

作者:iamlaosong

    VBA中变量可以先定义后使用,也可以不定义直接使用。如果模块前面加了Option Explicit语句,则变量必须先定义后使用。不过,实验发现,VBA对变量类型没有进行严格的管控,不管哪种情况,定义的类型和实际使用中赋值类型并没有什么关系,也就是说定义为integer的变量同样赋值字符串,反之也然。

这样的结果往往会在程序中产生歧义,导致错误的运行结果。例如下面的语句:

    Dim  Scan(3000), BarCode As String

    。。。

    BarCode = Cells(row2, 5)

    If Scan(row1) = BarCode Then

    。。。

这时BarCode保存值的类型由单元格的类型决定,特别是单元格的内容为数字时,BarCode保存值的可能是字符,也可能是数字,这很容易混淆,当你用BarCode和其它变量比较时,如果类型不对,即便数字相同,也会不等,所以编程中要特别注意,对这种可能引起混淆的情况,要强制进行转换,防止出错,即:

    BarCode = CStr(Cells(2, 5))


版权声明:本文为博主原创文章,未经博主允许不得转载。

VBS之on error resume next用法

VBScript语言提供了两个语句和一个对象来处理"运行时错误",如下所示: On Error Resume Next语句 On Error Goto 0语句 Err对象 简单...
  • icanlove
  • icanlove
  • 2014年09月19日 10:13
  • 5422

VBA教程初级(三):变量的声明与作用域

我们知道了什么是变量。也就可以理解知道了拿酱油瓶,里面有酱油。那么问题来了,你拿谁家的酱油瓶呢?是自己家的,还是隔壁老王家的?这就涉及到了变量的作用域。 变量的声明很简单,就是告诉计算机,这...
  • hxq_793034963
  • hxq_793034963
  • 2016年03月02日 15:51
  • 2746

VBA中变量和变量作用

 VBA中变量和变量作用一、变量  变量是用于临时保存数值的地方.每次应用程序运行时,变量可能包含不同的数值,而在程序运行时,变量的数值可以改变.   为了说明为什么需要变量,可以按照如下步骤创建一个...
  • xpw6418968
  • xpw6418968
  • 2007年05月27日 21:57
  • 1524

on error resume next 的作用范围

 一直对这个不太清楚,帮助里似乎也没有说,于是今天作了个测试1、On Error 可作用到被调用的子函数中在调用过程前使用on error ,发现对过程内的执行起作用。代码注:数据库中没有 abcd ...
  • lanman
  • lanman
  • 2007年12月07日 10:47
  • 3154

On Error Resume Next使用的了解

先声明关于这个命令的理解都是出于自己程序使用后有感而发,如果有错误情况欢迎指正。     我们都知道java、c#等语言的纠错机制是通过try...catch...来处理遇到错误情况的处理机制,其实...
  • eadio
  • eadio
  • 2015年01月12日 16:34
  • 812

VBA--声明变量类型的一个陷阱!

Declaring Variable Type You can declare a variable’s type on a Dim statement, or related declaratio...
  • hj33053252
  • hj33053252
  • 2012年05月07日 18:43
  • 1399

VBA中给变量赋值使用set和不使用set的区别

VBA中给变量赋值使用set和不使用set的区别 '给普通变量赋值使用LET ,只是LET 可以省略。 '给对象变量赋值使用SET,SET 不能省略。例如ADODB.RecordSet等对象。...
  • x359981514
  • x359981514
  • 2012年11月21日 19:29
  • 6207

菜刀ASP 下载文件抓包

http://blog.csdn.net/webxscan     神龙 打开文件 Send: Return Code: 0x00000000 webxscan=Eval   (...
  • webxscan
  • webxscan
  • 2016年05月08日 23:57
  • 2401

VB中On Error Resume Next 什么意思,一般在什么情况下使用

发生错误时 让程序继续执行下一句代码 Private Sub Form_Load() On Error Resume Next Debug.Print 1 / 0 MsgBox "继续执行" End ...
  • NCTU_to_prove_safety
  • NCTU_to_prove_safety
  • 2016年12月02日 15:15
  • 737

VBA FileSystemObject 用户定义类型未定义

以下VB代码,产生编译错误:用户定义类型未定义 Dim fso As New FileSystemObject, fil As FileListBox Set fil = fso.create...
  • iamhj
  • iamhj
  • 2011年05月06日 12:22
  • 5449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【VBA研究】变量定义的类型和实际赋值类型
举报原因:
原因补充:

(最多只允许输入30个字)