Excel VBA:是否需要变量声明?

Excel VBA:是否需要变量声明?,vba,excel,variable-declaration,Vba,Excel,Variable Declaration,如果写下面的代码会不会出错 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)) Ne

如果写下面的代码会不会出错

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

如果Option Explicit没有打开,您可以这样做,但我不建议这样做,因为这样您就依赖于框架来猜测它正在处理的变量类型,这可能会导致意外的结果。

它工作正常,直到它不工作为止

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

最好声明all,这样您就不会在运行时遇到歧义


我也倾向于MikeD关于自动完成的评论。

@DaMartyr,谢谢!如果你将成为一名大学教授,你会因为我没有声明而给我打分吗?开始键入“xrange”。在你的第一个示例中,看着方法和属性在点上展开,而在你的第二个示例中则不然——这将在你编写代码时给你帮助和信心——这就是为什么我总是首先限定我的对象。几乎没有任何情况下您必须使用late bindingYep。这是一种坏习惯。在中型/大型项目中,您可以在没有显式选项的情况下进入深水区。@i,j,k为整数。。。logicamente@belisarius--不,不,不,一千次不!这是基于VB的语言(VB&VBA)的陷阱之一。“Dim i,j,k As Integer”将得到一个整数(k)和两个变量(i&j)。您可以在一行中完成所有操作,因此:“Dim i为整数,j为整数,k为整数”