Прошу прощения но в интернете встречаются разные разъяснения: Вот на одном сайте: [vba]
Код
Можно объявить несколько переменных в одном операторе без повторения типа данных. В следующих операторах переменные i ,j и k объявляются как тип Integer, l и m как Long, x и y как Single: Dim i, j, k As Integer ' All three variables in the preceding statement are declared as Integer. Dim l, m As Long, x, y As Single ' In the preceding statement, l and m are Long, x and y are Single.
[/vba]
Вот на другом: [vba]
Код
Очень частая ошибка при объявлении переменных, совершаемая начинающими изучать VBA:
Dim MyVar1, MyVar2, MyVar3 As Integer
Вроде бы исходя из логики всем переменным присвоен тип данных Integer. Но это ошибочное суждение. Тип Integer присвоен только последней переменной, к которой он «привязан» оператором As — MyVar3. Все остальные переменные имеют тип данных Variant. Т.е. если Вы не задаете переменной тип хранимых данных явно(т.е. не указываете для неё тип данных), то VBA сам присваивает такой переменной тип данных Variant, т.к. он может хранить любой тип данных. А вот так выглядит правильное присвоение типа данных:
Dim MyVar1 As Integer, MyVar2 As Integer, MyVar3 As Integer
[/vba]
отсюда вопрос: это 1)[vba]
Код
Dim S1, S2, S3 As String
[/vba] одно и тоже с этим 2)[vba]
Код
Dim S1 As String, S2 As String, S3 As String
[/vba]
Т.е. если все три переменные нужно объявить как строковые, то нужно делать как во втором случае? Или это одно и тоже?
Прошу прощения но в интернете встречаются разные разъяснения: Вот на одном сайте: [vba]
Код
Можно объявить несколько переменных в одном операторе без повторения типа данных. В следующих операторах переменные i ,j и k объявляются как тип Integer, l и m как Long, x и y как Single: Dim i, j, k As Integer ' All three variables in the preceding statement are declared as Integer. Dim l, m As Long, x, y As Single ' In the preceding statement, l and m are Long, x and y are Single.
[/vba]
Вот на другом: [vba]
Код
Очень частая ошибка при объявлении переменных, совершаемая начинающими изучать VBA:
Dim MyVar1, MyVar2, MyVar3 As Integer
Вроде бы исходя из логики всем переменным присвоен тип данных Integer. Но это ошибочное суждение. Тип Integer присвоен только последней переменной, к которой он «привязан» оператором As — MyVar3. Все остальные переменные имеют тип данных Variant. Т.е. если Вы не задаете переменной тип хранимых данных явно(т.е. не указываете для неё тип данных), то VBA сам присваивает такой переменной тип данных Variant, т.к. он может хранить любой тип данных. А вот так выглядит правильное присвоение типа данных:
Dim MyVar1 As Integer, MyVar2 As Integer, MyVar3 As Integer
[/vba]
отсюда вопрос: это 1)[vba]
Код
Dim S1, S2, S3 As String
[/vba] одно и тоже с этим 2)[vba]
Код
Dim S1 As String, S2 As String, S3 As String
[/vba]
Т.е. если все три переменные нужно объявить как строковые, то нужно делать как во втором случае? Или это одно и тоже?Анатолий
Вообще-то, пора бы уже и зарегистрироваться, Вы как считаете? А то Ваши "коды" читать уж очень неудобно
Сначала охренел, мягко говоря. сайт Майкрософт http://msdn.microsoft.com/ru-ru/library/ke6sh835.aspx Потом почитал внимательно - там не про VBA, а про VB. Не знаю, есть ли разница. С VB не общался - может, там такой синтаксис и прокатывает. Анатолий, Запустите для проверки такой макрос [vba]
Код
Sub tt() Dim w, e As Boolean w = 2 e = 2 [a1] = w [a2] = e End Sub
[/vba] и Вам сразу все станет ясно
Вообще-то, пора бы уже и зарегистрироваться, Вы как считаете? А то Ваши "коды" читать уж очень неудобно
Сначала охренел, мягко говоря. сайт Майкрософт http://msdn.microsoft.com/ru-ru/library/ke6sh835.aspx Потом почитал внимательно - там не про VBA, а про VB. Не знаю, есть ли разница. С VB не общался - может, там такой синтаксис и прокатывает. Анатолий, Запустите для проверки такой макрос [vba]
Код
Sub tt() Dim w, e As Boolean w = 2 e = 2 [a1] = w [a2] = e End Sub
'Иногда удобнее использовать префиксы, причём по двум причинам '1 - первая буква имени уже подсказывет её тип '2 - не указываем тип при объявлении (что и требовалось)Код Visual Basic
'В секции Declaration DefInt I DefLng L DefStr S
Sub Макрос1() Dim i1, i2, i_K, l, s MsgBox TypeName(i_K) MsgBox TypeName(l) MsgBox TypeName(s) End Sub
[/vba]
Такой вариант: [vba]
Код
Option Explicit
'Иногда удобнее использовать префиксы, причём по двум причинам '1 - первая буква имени уже подсказывет её тип '2 - не указываем тип при объявлении (что и требовалось)Код Visual Basic
'В секции Declaration DefInt I DefLng L DefStr S
Sub Макрос1() Dim i1, i2, i_K, l, s MsgBox TypeName(i_K) MsgBox TypeName(l) MsgBox TypeName(s) End Sub
Потом почитал внимательно - там не про VBA, а про VB. Не знаю, есть ли разница. С VB не общался - может, там такой синтаксис и прокатывает.
запросто,даже иногда удобно.Например [vba]
Код
Private Sub Это_Возможно() For n As Integer = 0 To 3 If 1 = 2 Then Dim r As String = "" Else Dim r As Image = Nothing End If If 1 = 2 Then Dim r As Integer = 2 Else Dim r As Double = 34.0 End If Next End Sub
Потом почитал внимательно - там не про VBA, а про VB. Не знаю, есть ли разница. С VB не общался - может, там такой синтаксис и прокатывает.
запросто,даже иногда удобно.Например [vba]
Код
Private Sub Это_Возможно() For n As Integer = 0 To 3 If 1 = 2 Then Dim r As String = "" Else Dim r As Image = Nothing End If If 1 = 2 Then Dim r As Integer = 2 Else Dim r As Double = 34.0 End If Next End Sub
Насколько мне известно такой способ возможен только в VB.NET. Ни в VB6, ни в VBA он не катит. Кстати в VB.NET тип данных относится ко всем переменным в строке: [vba]
Код
Dim i, j, k As Integer
[/vba] В VB.NET все переменный будут Integer В VB6 и VBA k Integer i, j - Variant
Цитата
запросто,даже иногда удобно [vba]
Код
For n As Integer = 0 To 3
[/vba]
Насколько мне известно такой способ возможен только в VB.NET. Ни в VB6, ни в VBA он не катит. Кстати в VB.NET тип данных относится ко всем переменным в строке: [vba]
Код
Dim i, j, k As Integer
[/vba] В VB.NET все переменный будут Integer В VB6 и VBA k Integer i, j - Variantalex77755