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,只粘贴数值,不要公式。

数值孔径NA分辨率极限与衍射极限

Swift常量和变量

关于swift中的常量和变量

Java虚拟机常量池和本地变量表自己定义的数值自动装入常量池

Swift 基础语法