【问题标题】:What does the $ symbol do in VBA?VBA中的$符号有什么作用?
【发布时间】:2010-08-02 15:56:32
【问题描述】:

例如:

variable1=Dir$(some_path)

对比

variable1=Dir(some_path)

有什么区别?

为什么不直接做:

variable1=string(Dir(some_path))

【问题讨论】:

    标签: vba types


    【解决方案1】:

    这是数据类型的备忘单

    变量结尾为:

    $ : String
    % : Integer (Int16)
    & : Long (Int32)
    ! : Single
    # : Double
    @ : Decimal
    

    开始于:

    &H : Hex
    &O : Octal
    

    VB与VB.Net的比较(reference)

    Visual Studio .Net 添加了文字类型 (reference)

    值结尾为:(有关更完整的列表,请参阅参考资料)

    S : Short (Int16)
    I : Integer (Int32)
    L : Long (Int64)
    F : Single
    R : Double
    D : Decimal
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 为什么不这样做:variable1=string(Dir(some_path))
      • 我们来看看:Debug.Print TypeName(Mid("abc", 2, 1))返回StringDebug.Print TypeName(Mid$("abc", 2, 1))也 返回String。另一方面,还有this
      【解决方案3】:

      美元符号表示将返回一个字符串而不是一个变体。

      【讨论】:

      • 为什么不这样做:variable1=string(Dir(some_path))
      【解决方案4】:

      Dir() 将结果作为变体数据类型返回。 Dir$() 以字符串数据类型返回结果。

      【讨论】:

        【解决方案5】:

        一些使用 $ 版本是为了它声称的效率(因为它只接受和输出静态类型的变量)。不知道静态类型和变体类型的速度差异有多大,只是基准测试

        【讨论】:

        • 那么为什么不对其进行测试,而不是发布一个关于您是否认为有好处(据称)但随后明确表示您不知道的模棱两可的答案? :)
        • @brettdj 我知道 $ version 函数比 non-dollar 更快(接受变体参数),但不知道 数百万 次迭代的速度可能是惊人的.我从来没有在一个循环中做任何事情,只是让数据库做繁重的工作,也许如果我是一个组件制造商,我可以欣赏 $%&!#@(我不是在诅咒 eh lol)版本功能的效率。对一些人来说,这是一种所谓的效率;但对一些人来说,效率是真实的和有形的。这是一个示例基准shamrock-software.eu/vb.htm
        • @MichaelBuen “我不是在诅咒”:D
        猜你喜欢
        • 1970-01-01
        • 2010-09-26
        • 2020-02-07
        • 1970-01-01
        • 2011-04-06
        • 2016-06-17
        • 2011-09-17
        • 1970-01-01
        相关资源
        最近更新 更多