2011-12-22 3 views
0

Я только что получил много проблем и не могу найти решение. Я сделал довольно большой макрос, который использовался в течение нескольких лет в Excel 2003. Теперь мой друг обновился до офиса 2010 года, и внезапно макросы не работают так, как должны.Код Vba не работает должным образом в Excel 2010?

Я проследил одну ошибку до этой строки, которая, кажется, бросает десятичные знаки для переменной. Эта линия:

varHeight = ActiveSheet.Pictures("temp").Height 

В Excel 2003 эта строка считывает высоту изображения под названием «Темп» и переменная «varHeight» получает значение 5,25.

Если я попробую то же самое в переменной Excel 2010, переменная varHeight получит значение 5. Итак, здесь десятичная метка отбрасывается. Я не понимаю, как это происходит.

Переменная varHeight объявляется этой линией:

Dim AntalMMPerPixel, IsoHöjd, varHeight As Double 

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

я использовал точку останова в коде, чтобы увидеть, какое значение присваивается переменной, как в Excel 2003 и Excel 2010.

Любые советы и идеи ценится?

С наилучшими пожеланиями

+0

Что такое varHeight, объявленный как? –

+0

Вам необходимо предоставить более подробную информацию. Как попросил justnS - какой тип переменной «varHeight»? Откуда вы знаете, что значение другое - т.е. что вы делаете с varHeight после получения высоты картины? –

+0

FWIW: свойство '' Height'' возвращает Double. –

ответ

0

Я не могу найти никакой документации по коллекции изображения, как у вас есть. Возможно, произошли изменения в нем между версиями, но он выглядит недокументированным. Вы можете попытаться использовать объект фигуры, чтобы увидеть, помогает ли это вообще. Это дало мне правильное двойное значение в Excel 2003, однако я не могу проверить на excel 2010.

Public Sub Test() 

    MsgBox GetPictureHeight(Sheets("Sheet1"), "Picture 1") 
End Sub 

Public Function GetPictureHeight(wrk As Worksheet, pictureName As String) As Double 
'returns the height of the named picture on the specific worksheet 

    Dim pic As Shape 

    Set pic = wrk.Shapes(pictureName) 

    GetPictureHeight = pic.height 
End Function 
+0

Я только что попробовал приведенный выше код, а в Excel 2010 он дает значение 5 .. Нет десятичных знаков? Разве это не странно, может они что-то изменили в picture.height, поэтому он больше не использует десятичные знаки. Кажется странным .. – Evilaid

+0

Я только что проверил это с Excel 2010 US English под управлением Windows 7 Enterprise. Для моего образца изображения я получаю значение 590.400024 ... Он возвращает десятичные значения. –

+0

Вы сделали ?? Я не могу это понять? У меня просто было то, что Excel 2010 - это шведская версия, а в Швеции мы используем «,», чтобы отметить decmials и использование в США ». и сенсорные окна - это английский, может быть что-то есть? может быть? – Evilaid

Смежные вопросы