2014-01-06 125 views
4

我對VBA的使用經驗很少,而且最近一次使用VBA的時間很多年前。 繼承人我VBA:VBA編譯錯誤

Function MacIDGen(total, current) 
If total - current = 0 Then 
    current -1 
Else 
    current 1 
End If 
    Macro1 (current) 
End Function 

Sub Macro1(cur) 
    Sheets("Donations").Cells(I2).Value = cur & "Test" 
End Sub 

這是它自己的模塊,與它在所有沒有其他的代碼。

所以我有一個叫MacIDGen()的單元格。它通過MacID兩個其他單元格值。每當它執行時出現錯誤「編譯錯誤:預期的子,函數或屬性」並突出顯示函數方法簽名。

我不知道爲什麼它踢這裏,我猜它是因爲我已經錯過了一個重要的步驟或關於如何不能在這種情況下的功能或其他這樣的問題。

編輯 作爲一些額外的信息,我在Excel中創建這些電子表格,作爲隨機數據生成表導入到Drupal站點。我遇到了一個無法使用循環就無法解決的問題(我也無法硬編碼迭代次數),哪些公式不能。

+1

有很多錯誤,但主要的錯誤是,你不能使用UDF寫入到另一個細胞。 –

+0

所以這就是爲什麼我要調用宏。此外,錯誤發生在第一行,它沒有接近寫入的地方:/ –

+0

發佈答案 –

回答

2

關於Compile Error,你得到的是因爲你忘了就像我提到的使用=登錄current -1current 1

,有很多錯誤,但主要的錯誤是,你不能使用UDF寫入另一個小區。如果將該函數分解爲函數或子函數,這並不重要。你根本無法寫入任何其他單元格。您將在使用該功能的單元格中獲得#Value

A Function用於您想要返回某些內容時。現在,因爲您將此用作UDF(用戶定義的函數),它應該返回某些內容並將其返回給特定的單元格。

如果您正在編寫到該函數從名爲那麼如果你想改變,你可以使用一個子過程,而不是一個UDF的細胞更改您的代碼

Function MacIDGen(total, current)  
    If total - current = 0 Then 
     current = -1 
    Else 
     current = 1 
    End If 

    MacIDGen = current & "Test" 
End Function 
+0

這已修復此問題。然而,當你說你不能用UDF改變單元值時,我不能調用Macro1,並讓它改變值(如上所述)? –

+0

否你不能:)編輯後,你不需要Dim語句,所以我已經從我的代碼中刪除它。 –

0

同一單元格,在您需要一種方法來從電子表格中執行它,例如commandButton,功能區按鈕或組合鍵快捷鍵。 如果是這樣,你的第一行應該是:

Sub MacIDGen(total, current)