Vba代码在Excel 2010中的行为不正常吗?

时间:2011-12-22 19:38:31

标签: excel vba excel-vba

我遇到了很多问题,无法找到解决方案。 我制作了一个相当大的宏,已经在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 :(得分:0)

我似乎无法找到有关Picture集合的任何文档。版本之间可能已经发生了变化,但它似乎没有记录。您可以尝试利用形状对象来查看是否有帮助。它在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