Код VBA не ведет себя так, как должно быть в Excel 2010? - PullRequest
0 голосов
/ 22 декабря 2011

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

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

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

В Excel 2003 эта строка считывает высоту картинки, называемой "temp", а переменная "varHeight" получает значение 5,25.

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

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

Dim AntalMMPerPixel, IsoHöjd, varHeight As Double

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

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

Какие советы или идеи высоко ценится?

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

1 Ответ

0 голосов
/ 23 декабря 2011

Кажется, я не могу найти какую-либо документацию по коллекции изображений, поскольку она у вас есть.Возможно, между версиями произошли изменения, но это выглядит недокументированным.Вы можете попытаться использовать объект формы, чтобы увидеть, помогает ли это вообще.Это дало мне правильное двойное значение в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...