VBA研究用全局常量定义一些极限数值
Posted 宋哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA研究用全局常量定义一些极限数值相关的知识,希望对你有一定的参考价值。
作者:iamlaosong
工作中会经常碰到一些极限常量,比如Excel最大行数,编程的时候不知道大小,而这个数值程序中会用到。这种情况下,直接使用具体数值,哪怕是比较大的数值也是不对的,因为这个值一旦不合适,改的地方就会很多。好的办法是定义一个常量,就可以方便今后这个值的变更。
举个例子。我在做邮件轨迹查询工具时,一开始把这个最大轨迹数量定义为100,并且认为这个值够大了。我用这个100定义了数组,后面的处理又用这个100作为循环最大次数。这个工具用了几年都没问题,后来终于有人给我反映有些邮件轨迹信息不全。检查结果是轨迹数据超过100了,我将数组改成200,结果还是不行,仔细检查发现还有循环次数要改。这个事情让我想到,要是这个值用变量的话,只要修改变量值,后面的代码就不用管了。具体方法如下(注意下面代码中红色字体的常量):
'定义全局变量
Const MaxTrace = 200
Dim TraceInfo(MaxTrace, 12) As String
。。。
'函数,从字符串中取出轨迹信息,返回条数
Function get_trace(mystring As String) As Integer
Dim objJSx As Object, objJSy As Object
Dim m1, m2, n, j As Integer
Dim source, level, kind, sm As String
On Error Resume Next
Set objJSx = CreateObject("ScriptControl") '调用MSScriptControl.ScriptControl对象将提取的变量文本运算形成对象集合
objJSx.Language = "javascript" '测试发现JavaScript、javascript、JScript都可以表示JavaScript语言
'定义一个JS函数,通过计算表达式的方式引入JSON数据并解析
jscode = "function json(s,i) { return eval('(' + s + ').traces[' + i + ']'); }"
objJSx.AddCode jscode
TT = "否"
For n = 1 To MaxTrace
If objJSx.Run("json", mystring, n - 1) = "" Then Exit For
以上是关于VBA研究用全局常量定义一些极限数值的主要内容,如果未能解决你的问题,请参考以下文章
VBA复制表1有数据的单元格粘贴到表2,只粘贴数值,不要公式。