ExcelVBA编程系列之数据类型(1):常量

常量,也称常数,在程序过程中其值保持不变。常数可以是字符串、数值、另一常数、任何(除乘幂与Is之外的)算术运算符或逻辑运算符的组合。每个主应用程序都可定义自己的一组常数,也可以用Const语句定义附加常数。定义常量使程序设计变得更简单,可在代码中的任何地方使用常数代替实际的值或字符串,从而提高程序的可读性,并且更容易修改这个值。

1、系统自定义的常量

由应用程序与控件提供(提供对象库的其它的应用程序如 Microsoft Access、Microsoft Project以及Microsoft Word也提供常数列表),这些常数可与它们所属的对象,方法以及属性等一起使用。Visual Basic 的常数都列在 Visual Basic for Applications类型库以及 Data Access Object(DAO)程序库之中。(注:Visual Basic 仍会对之前的 Visual Basic 或 Visual Basic for Applications 所定义的常数做识别。可以将常数提取到对象浏览器之中。在对象浏览器中所列的常数,不用在的应用程序中声明)

在早期版本的VB中,常量的名称都是用大写字符串加上一个下划线组成,例如:TILE_HORIZONTAL。在系统自定义的常量中,由于具有相同名称的常量存在于多个对象库中,而且这些常量可能具有不同的值,因而可能会造成混淆。有两种方法来对常量名进行限定:

(1)用前缀限定常量

所有应用程序与控件对象库提供的自定义常数都以混合大小写格式显示,以两个字符为前缀来指出定义这些常量的对象库。例如,由Visual Basic for Applications 对象库常数以“vb”开头;而由Microsoft Excel对象库提供的常数以“xl”为开头。

(2)用库引用限定常量

可利用下面的语句来限定对常量的引用:

[libname.] [modulename.]constname

说明:

libname,可选的。定义此常数的类型库。

modulename,可选的。定义此常数的类型库所包含的模块的名称,可以利用“对象浏览器”来找到模块的名称。

constname,在类型库中定义的常数名称。

ExcelVBA自定义常量类型,共16种,见下表。

VBA自定义常量类型表

常量类型

说明

常量类型

说明

Calendar

日历常量

Keycode

鼠标、键盘常量

CallType

调用常量

Miscellaneous

控制键常量

Color

颜色常量

MsgBox

消息框常量

Compiler

编译常量

QueryClose

程序控制常量

Date

日期常量

Shell

窗体控制常量

DirGetAttrSetAttr

目录常量

StrConv

字符串转化常量

IMEStatus

区域IME常量

系统颜色

系统颜色常量

InstrStrComp

字符比较常量

VarType

数据类型常量

 

ExcelVBA自定义常量,另见VBA自定义常量列表,或查阅VBA帮助系统。

此外,Excel内置常量,另见Excel内置常量列表,或查阅VBA帮助系统。

2、用户自定义的常量

符号或用户自定义的常数都是利用 Const 语句来声明。

语法:

[Public|Private] Const 常量名 [As type] = expression

说明:

(1)[Public|Private],可选的参数,声明常量的作用域。Public关键字定义的常量适用于所有的模块,并在模块的第一个过程前进行声明;Private关键字定义的常量只适用于当前模块,并在该模块的第一个过程前进行声明;若只是在某个过程中使用常量,则在Sub或Function语句之后进行声明。

(2)常量名(constname),必要的参数,为Variant(String)型,名称要遵守变量命名的规定。

(3)expression,必要的参数,为文字、其他的条件编译常数或包含除了 Is 以外的算术或逻辑运算符的任意组合。不能使用变量,用户自定义的函数,或 Visual Basic 的内部函数(如Chr)。

(4)type,可选的参数,若没有声明数据类型,VBA将根据值决定数据的最合适的数据类型。可以是 Byte、 Boolean 、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String 或 Variant。所声明的每个变量都要使用一个单独的 As 类型子句。

(5)若更改VBA过程中的某个常量的值,会出现错误消息。

(6)在默认情况下常数是过程级或单个模块级的。过程中的常数总是过程级的,不能改变。在标准模块中,可以用 Public 关键字来改变模块级常数的作用域。但在类模块中,常数只能是过程级或单个模块级的,用Public关键字也不能改变其作用域。

(7)可在一行中声明多个常数,即用逗号将每个常数赋值分开。用这种方法声明常数时,如果使用了PublicPrivate关键字,则该关键字对该行中所有常数都有效。

3、条件编译常量

利用#Const语句声明。

语法:

#Const constname = expression

说明:

(1)constname,必要的参数,为Variant(String)型,名称要遵守变量命名的规定。

(2)expression,必要的参数,为文字、其他的条件编译常数或包含除了Is以外的算术或逻辑运算符的任意组合。使用一个用#Const定义的标准常数,或者使用一个未定义的常数,都会导致错误发生。反之,用#Const关键字定义的常数也只能用于条件编译。

    (3)条件编译常数在其出现的模块中总是 Private,不可能利用#Const指令建立Public 编译常数,Public 编译常数只能在用户接口中建立。不管条件编译常数在程序中的位置如何,都总是在模块级别中进行计算。

Excel VBA常数变量集合,部分示例如下: Public Const xlAll = &HFFFFEFF8 Public Const xlAutomatic = &HFFFFEFF7 Public Const xlBoth = 1 Public Const xlCenter = &HFFFFEFF4 Public Const xlChecker = 9 Public Const xlCircle = 8 Public Const xlCorner = 2 Public Const xlCrissCross = 16 Public Const xlCross = 4 Public Const xlDiamond = 2 Public Const xlDistributed = &HFFFFEFEB Public Const xlDoubleAccounting = 5 Public Const xlFixedValue = 1 Public Const xlFormats = &HFFFFEFE6 Public Const xlGray16 = 17 Public Const xlGray8 = 18 Public Const xlGrid = 15 Public Const xlHigh = &HFFFFEFE1 Public Const xlInside = 2 Public Const xlJustify = &HFFFFEFDE Public Const xlLightDown = 13 Public Const xlLightHorizontal = 11 Public Const xlLightUp = 14 Public Const xlLightVertical = 12 Public Const xlLow = &HFFFFEFDA Public Const xlManual = &HFFFFEFD9 Public Const xlMinusValues = 3 Public Const xlModule = &HFFFFEFD3 Public Const xlNextToAxis = 4 Public Const xlNone = &HFFFFEFD2 Public Const xlNotes = &HFFFFEFD0 Public Const xlOff = &HFFFFEFCE Public Const xlOn = 1 Public Const xlPercent = 2 Public Const xlPlus = 9 Public Const xlPlusValues = 2 Public Const xlSemiGray75 = 10 Public Const xlShowLabel = 4 Public Const xlShowLabelAndPercent = 5 Public Const xlShowPercent = 3 Public Const xlShowValue = 2 Public Const xlSimple = &HFFFFEFC6 Public Const xlSingle = 2 Public Const xlSingleAccounting = 4 Public Const xlSolid = 1 Public Const xlSquare = 1 Public Const xlStar = 5 Public Const xlStError = 4 Public Const xlToolbarButton = 2 Public Const xlTriangle = 3 Public Const xlGray25 = &HFFFFEFE4 Public Const xlGray50 = &HFFFFEFE3 Public Const xlGray75 = &HFFFFEFE2 Public Const xlBottom = &HFFFFEFF5 Public Const xlLeft = &HFFFFEFDD Public Const xlRight = &HFFFFEFC8 Public Const xlTop = &HFFFFEFC0 Public Const xl3DBar = &HFFFFEFFD Public Const xl3DSurface = &HFFFFEFF9 Public Const xlBar = 2 Public Const xlColumn = 3 Public Const xlCombination = &HFFFFEFF1 Public Const xlCustom = &HFFFFEFEE Public Const xlDefaultAutoFormat = -1 Public Const xlMaximum = 2 Public Const xlMinimum = 4 Public Const xlOpaque = 3 Public Const xlTransparent = 2 Public Const xlBidi = &HFFFFEC78 Public Const xlLatin = &HFFFFEC77 Public Const xlContext = &HFFFFEC76 Public Const xlLTR = &HFFFFEC75 Public Const xlRTL = &HFFFFEC74 Public Const xlFullScript = 1 Public Const xlPartialScript = 2 Public Const xlMixedScript = 3 Public Const xlMixedAuthorizedScript = 4 Public Const xlVisualCursor = 2 Public Const xlLogicalCursor = 1 Public Const xlSystem = 1 Public Const xlPartial = 3 Public Const xlHindiNumerals = 3 Public Const xlBidiCalendar = 3 Public Const xlGregorian = 2 Public Const xlComplete = 4 Public Const xlScale = 3 Public Const xlClosed = 3 Public Const xlColor1 = 7 Public Const xlColor2 = 8 Public Const xlColor3 = 9 Public Const xlConstants = 2 Public Const xlContents = 2 Public Const xlBelow = 1 Public Const xlCascade = 7 Public Const xlCenterAcrossSelection = 7 Public Const xlChart4 = 2 Public Const xlChartSeries = 17 Public Const xlChartShort = 6 Public Const xlChartTitles = 18 Public Const xlClassic1 = 1 Public Const xlClassic2 = 2 Public Const xlClassic3 = 3 Public Const xl3DEffects1 = 13 Public Const xl3DEffects2 = 14 Public Const xlAbove = 0 Public Const xlAccounting1 = 4 Public Const xlAccounting2 = 5 Public Const xlAccounting3 = 6 Public Const xlAccounting4 = 17 Public Const xlAdd = 2 Public Const xlDebugCodePane = 13 Public Const xlDesktop = 9 Public Const xlDirect = 1 Public Const xlDivide = 5 Public Const xlDoubleClosed = 5 Public Const xlDoubleOpen = 4 Public Const xlDoubleQuote = 1 Public Const xlEntireChart = 20 Public Const xlExcelMenus = 1 Public Const xlExtended = 3 Public Const xlFill = 5 Public Const xlFirst = 0 Public Const xlFloating = 5 Public Const xlFormula = 5 Public Const xlGeneral = 1 Public Const xlGridline = 22 Public Const xlIcons = 1 Public Const xlImmediatePane = 12 Public Const xlInteger = 2 Public Const xlLast = 1 Public Const xlLastCell = 11 Public Const xlList1 = 10 Public Const xlList2 = 11 Public Const xlList3 = 12 Public Const xlLocalFormat1 = 15 Public Const xlLocalFormat2 = 16 Public Const xlLong = 3 Public Const xlLotusHelp = 2 Public Const xlMacrosheetCell = 7 Public Const xlMixed = 2 Public Const xlMultiply = 4 Public Const xlNarrow = 1 Public Const xlNoDocuments = 3 Public Const xlOpen = 2 Public Const xlOutside = 3 Public Const xlReference = 4 Public Const xlSemiautomatic = 2 Public Const xlShort = 1 Public Const xlSingleQuote = 2 Public Const xlStrict = 2 Public Const xlSubtract = 3 Public Const xlTextBox = 16 Public Const xlTiled = 1 Public Const xlTitleBar = 8 Public Const xlToolbar = 1 Public Const xlVisible = 12 Public Const xlWatchPane = 11 Public Const xlWide = 3 Public Const xlWorkbookTab = 6 Public Const xlWorksheet4 = 1 Public Const xlWorksheetCell = 3 Public Const xlWorksheetShort = 5 Public Const xlAllExceptBorders = 6 Public Const xlLeftToRight = 2 Public Const xlTopToBottom = 1 Public Const xlVeryHidden = 2 Public Const xlDrawingObject = 14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值