【问题标题】:Excel-VBA: Variable declaration necessary?Excel-VBA:需要变量声明吗?
【发布时间】:2010-11-17 14:48:47
【问题描述】:

写下面的代码会不会出错

Sub Something()
 Dim i As integer
 Dim xRange As Range
 Dim yRange As Range

 Set xRange= Range("x_table")
 Set yRange= Range("y_table")

 For i = 1 To xRange.Columns.Count
    xRange.Columns(i) = Application.Sum(y_table.Columns(i))
 Next i
End Sub

没有明确声明每个变量?如下所示;

Sub Something()
 Set xRange= Range("x_table")
 Set yRange= Range("y_table")

 For i = 1 To xRange.Columns.Count
    xRange.Columns(i) = Application.Sum(y_table.Columns(i))
 Next i
End Sub

【问题讨论】:

    标签: vba excel variable-declaration


    【解决方案1】:

    如果 Option Explicit 没有打开你可以那样做,但我不推荐它,因为你依赖框架来猜测它的变量类型处理,这可能会导致意想不到的结果。

    【讨论】:

    • @DaMartyr,谢谢!如果你将成为一名大学教授,你会因为我不申报而给我打分吗?
    • 开始输入“xrange”。并注意在第一个示例中扩展点上的方法和属性,而在第二个示例中没有 - 这将在您编码时为您提供帮助和信心 - 这就是为什么我总是首先限定我的对象。几乎没有必须使用后期绑定的情况
    • 是的。这是一种不好的做法。在中型/大型项目中,您可以在没有 Option Explicit 的情况下进入深水区。
    • @Carlos Dim i, j, k As Integer ... logicamente
    • @belisarius——不,不,不,一千次不!这是基于 VB 的语言(VB 和 VBA)的陷阱之一。 “Dim i, j, k As Integer”将为您提供一个整数 (k) 和两个变体 (i & j)。您可以在一行中完成所有操作,因此:“Dim i As Integer, j As Integer, k As Integer”
    【解决方案2】:

    它工作正常,直到它不起作用。

    您的示例非常简单,但完全有可能提出导致问题的情况。

    最好声明 all,以免在运行时遇到歧义。

    我也偏爱 MikeD 关于自动完成的评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2011-08-16
      相关资源
      最近更新 更多