Страницы: 1
RSS
Непонятная ошибка макроса после перехода с 2000 на 2003 Эксель
 
Столкнулся с непонятной ошибкой после перехода с 2000 на 2003 Эксель.  
Есть файл с кодом, код древний, но прекрасно работал.  
Вот такая строка, заносит формулу в ячейку:  
Selection.Offset(0, 12).Formula = "=H" & oneeur & "*" & cureur & "+H" & onelvl & "+H" & oneusd & "*" & curusd  
перестала работать, выпадает в ошибку, в errorhandler:  
 
---------------------------  
Microsoft Visual Basic  
---------------------------  
Run-time error '1004':  
 
Application-defined or object-defined error  
---------------------------  
OK   Help      
---------------------------  
 
 
Причём чуть выше строка  
Selection.Offset(0, 7).Formula = "=SUM(H" & one & ":H" & two & ")"  
продолжает работать.  
 
Формат ячеек роли не играет, т.е. при текстовом заносит строку, при других вылетает.  
Если  
Пока залатался так, но это уже не то, не видно, что из чего получили:  
 
ttt = Range("H" & oneeur).Value * cureur + Range("H" & onelvl).Value + Range("H" & oneusd).Value * curusd  
Selection.Offset(0, 12).Value = ttt  
 
Потестите, кому не лень - закомментированная строка отработает под 2003?  
 
Sub tt()  
oneeur = 1  
onelvl = 2  
oneusd = 3  
cureur = 0.222  
curusd = 0.333  
 
ttt = Range("H" & oneeur).Value * cureur + Range("H" & onelvl).Value + Range("H" & oneusd).Value * curusd  
Selection.Offset(0, 12).Value = ttt  
'Selection.Offset(0, 12).Formula = "=H" & oneeur & "*" & cureur & "+H" & onelvl & "+H" & oneusd & "*" & curusd  
End Sub
 
"Если" - проскочило из блокнота :) Не помню уже, что хотел там написать...
 
Игорь,  
дело не в версии Экса, а в локали - числа в формуле получаются с запятыми.  
Попробуй  
 
Selection.Offset(0, 12).FormulaLocal = "=H" & oneeur & "*" & cureur & "+H" & onelvl & "+H" & oneusd & "*" & curusd
 
Вот же...  
Спасибо.  
А ведь была мысль - даже отследил, какие курсы, что в формулу пишется...  
Если вывести это в строку, потом строку вставить как формулу - она считается, не меняя вида.  
Да и локаль как была русская, так и есть.  
И системный DecimalSymbol сейчас запятая, как и в переменных курсов.  
Экселю сказано брать системный разделитель.  
Вероятно, где-то внутри ему хочется точку :)  
 
Но надо было конечно самому попробовать дописать "Local", надо было :)  
 
В общем, разобрались, заработало.  
Хотя причина мне не совсем ясна - ведь в примере макроса переменные с точками, в окне Locals они уже с запятыми, как и в полученной формуле.  
Наверное, стоит поменять DecimalSymbol?
 
Да, поменял разделитель - заработал старый вариант кода.  
Спасибо ещё раз.
Страницы: 1
Наверх