2014-02-14 159 views
1

我爲excel做了一點加載項。 但由於某種原因,它失敗了。在重新啓動excel後,它工作正常,但是當我將粘貼文本複製到excel並嘗試運行它時,它給了我錯誤:運行時'1004',對象'範圍'的方法'值'失敗。Excel visual basic 1004錯誤,對象'範圍'的方法'值'失敗

我想要做的是簡單的退出。我喜歡在前面使用'='來構建公式,如:(B5 + B6)/ 2,因此Excel不計算這些表達式。我結束了一個大列,結束之後,我想選擇列中的第一個單元格進行計算,激活我的加載項,然後在前面放一個'=',並向下循環直到一個空單元格。這樣我的列中的每個單元格現在都可以計算出來。

我迷路了,你能幫助我嗎?

Sub makeFormula() 
Do 
ActiveCell.Value = "=" & ActiveCell.Value 
ActiveCell.Offset(1, 0).Select 
Loop While ActiveCell.Value <> Empty 
end Sub 
+0

單元格中的值是數字還是文本?如果他們不是數字,那麼你需要'ActiveCell.Formula =「=」「」&ActiveCell.Value&「」「」' –

+0

我認爲這個問題源於'鬼'excel過程,它試圖引用元素在那。使用活動頁面或範圍或引用工作簿對象似乎會破壞它,以及在工作簿或工作表對象上使用「With」命令。我的理解是你需要成爲一名開拓者,並將你的對象設置爲無,但是我仍然有一個程序會打破所有其他運行的錯誤。使用任務管理器,並殺死Excel的過程,它應該運行.. – Acantud

回答

0
Sub makeFormula() 
Dim c as range 
Set c = selection.cells(1) 'in case >1 cell is selected 
do while len(c.value) > 0 
    'need to put quotes around the value if not a number 
    'c.Formula = "=""" & c.Value & """" 
    'use this if the value is a valid formula without = 
    c.Formula = "=" & c.Value 
    Set c=c.Offset(1, 0) 
Loop 
End Sub 
+0

感謝這樣一個快速的答案,但迄今沒有運氣,當我嘗試你的代碼沒有任何反應。也許我不清楚自己的目標。我想選擇一個單元格,然後激活我的加載項,然後這個加載項將包含一個'='在單元格內容的前面,以便Excel將它作爲函數接受並計算它。它在列中的每個單元格重複此操作,直到它讀取一個空單元格 – ruben

+0

如果更新您的問題以更具體地說明您想要轉換爲公式的單元格中的內容,可能會有所幫助。如果你不需要單元格值附近的引號,那麼不要包含它們...... –

+0

也許我這次說得很清楚。 – ruben

0

您需要將您的值傳遞給臨時字符串變量。工作對我來說:

Sub makeFormula() 
    Dim Temp As String 
    Do 
     Temp = ActiveCell.Value2 
     ActiveCell.Formula = "=" & Temp 
     ActiveCell.Offset(1, 0).Select 
    Loop While ActiveCell.Value2 <> Empty 
End Sub 
+0

我試過這個,但還是沒有運氣。我從另一個excel文件複製:(2,1 + 0,3)* 3,6再次激活加載項和相同的錯誤。然後我將逗號改爲點並且它起作用了......所以看起來逗號就是問題所在 – ruben

2

我已經找到了解決辦法,調試我發現,逗號是問題,所以我改變逗號點,然後計算。現在它像一個魅力。

Sub makeFormula() 
Dim Temp As String 
Do 
    Temp = ActiveCell.Value2 
    Temp = Replace(Temp, ",", ".", 1) 
    ActiveCell.Formula = "=" & Temp 
    ActiveCell.Offset(1, 0).Select 
Loop While ActiveCell.Value2 <> Empty 
End Sub 

感謝您的所有建議。

相關問題