Здравствуйте!
При написании программ на vba столкнулся со странной проблемой:
VBA ошибается при работе с оператором if...
Прогонял программу по f8, видел что значения переменных были правильными, но оператор if врал...
Помогло в некоторых случаях введение дополнительных переменных.
Пример:
....
a=5
b=3
if a>b then c=5
else
c=10
end if
Ежели оператор if ошибся, можно попытаться заменить вот так:
.....
a=5
b=3
d=a
if d>b then c=5
else
c=10
end if
конечно ошибется if не в таком простом случае, а если к переменной "a" до того было много обращений...
Или вот еще пример:
Public Sub dimcreate(x1, y1, x2, y2, x3, y3)
Dim Acad As Object
Set Acad = GetObject(, "Autocad.Application")
If Err <> 0 Then
MsgBox "Autocad не запущен", vbExclamation
Exit Sub
End If
При многократном обращении к этой процедуре, оператор if врет( Ошибок нет, а он пишет как будто есть...
PS: Может быть существуют какие-то подводные камни, которые я не нашел в учебнике по vba?)
При написании программ на vba столкнулся со странной проблемой:
VBA ошибается при работе с оператором if...
Прогонял программу по f8, видел что значения переменных были правильными, но оператор if врал...
Помогло в некоторых случаях введение дополнительных переменных.
Пример:
....
a=5
b=3
if a>b then c=5
else
c=10
end if
Ежели оператор if ошибся, можно попытаться заменить вот так:
.....
a=5
b=3
d=a
if d>b then c=5
else
c=10
end if
конечно ошибется if не в таком простом случае, а если к переменной "a" до того было много обращений...
Или вот еще пример:
Public Sub dimcreate(x1, y1, x2, y2, x3, y3)
Dim Acad As Object
Set Acad = GetObject(, "Autocad.Application")
If Err <> 0 Then
MsgBox "Autocad не запущен", vbExclamation
Exit Sub
End If
При многократном обращении к этой процедуре, оператор if врет( Ошибок нет, а он пишет как будто есть...
PS: Может быть существуют какие-то подводные камни, которые я не нашел в учебнике по vba?)