2011-12-22 111 views
0

我剛剛得到了很多問題,找不到解決方案。 我做了一個相當大的宏,已經在Excel 2003中使用了幾年。現在我的朋友升級到Office 2010,突然宏不工作,因爲他們應該。Vba代碼的行爲與Excel 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中

任何提示或思想的大加讚賞?

問候

+0

什麼是varHeight聲明爲? – 2011-12-22 19:55:59

+0

您需要提供更多詳細信息。正如justnS所問 - 什麼類型的變量是'varHeight'?你怎麼知道價值是不同的 - 即。在獲取圖片的高度後,你使用varHeight做什麼? – 2011-12-22 20:02:29

+0

FWIW:''Height''屬性返回Double。 – 2011-12-22 20:13:17

回答

0

我似乎無法找到的圖片集合中的任何文件,你擁有它。版本之間可能會發生更改,但它看起來沒有文檔。您可以嘗試利用形狀對象來查看是否有幫助。它在excel 2003中給了我正確的double值,但是,我無法測試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 2011-12-22 20:50:57

+0

我剛剛在Windows 7 Enterprise下運行的Excel 2010美國英語測試。對於我的示例圖片,我得到值590.400024 ...它返回小數值。 – 2011-12-22 20:59:45

+0

你沒有?我不明白這一點?我只是想了解一下,Excel 2010是瑞典版本,在瑞典我們使用「,」來標記decmials和美國的用法。「 sens窗口是英文,那裏可能有些東西?也許? – Evilaid 2011-12-22 21:03:11