Excel-VBA: объявление переменных необходимо? - PullRequest
2 голосов
/ 17 ноября 2010

Было бы неправильно, если напишите следующий код

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

Ответы [ 2 ]

13 голосов
/ 17 ноября 2010

Если Option Explicit не включен, вы можете сделать это таким образом, но я бы не рекомендовал это делать, потому что тогда вы полагаетесь на структуру, чтобы угадать тип переменной, с которой он имеет дело с, что может привести к неожиданным результатам.

5 голосов
/ 17 ноября 2010

Работает нормально, пока не работает.

Ваши примеры довольно просты, но вполне возможно придумать ситуации, которые вызывают проблемы.

Лучше объявить все, чтобы не рисковать двусмысленностью во время выполнения.

Я также неравнодушен к комментарию MikeD относительно автозаполнения.

...