2013-05-29 48 views
1

我正在學習vba中的編碼,最近我遇到一個嚴重的問題:我不能將變量的值分配給變量而不先將變量放入單元格。我的觀點是我需要這些價值做一些其他的任務,但我不想把這些公式放到一個單元格中(如果我這樣做的話,它將需要更多的編碼)。將公式的值賦值給一個變量

我也試試這個:

Dim Total As Integer 
Total = FormulaR1C1 = "=sum(R1C1,R3C2)" 

但我知道這只是返回bolean值,這顯然不是我的注意

所以我在這裏主要的問題是:如何分配公式的值(在字符串或整數型)給一個變量

此外,作爲使用FormulaR1C1需要refernce細胞,是否需要分配給做出之前,選擇一個小區它的工作

+1

您的配方來自哪裏?你能給個例子嗎? – enderland

+0

你也可以在你的問題中顯示更多的代碼,以便更好地理解... –

回答

0

有一個選項可能對你很有趣。您可以調用SUM工作表函數從VBA通過WorksheetFunction對象調用它。怎麼運行的?

根據您例如,你可以讓你的R1C1 & R3C2(A1 & B3)的總和是這樣的:

Dim Total As Integer 
Total = WorksheetFunction.Sum(Range("A1,B3")) 

正如你可以看到它是需要使用Range object引用的單元格,你需要總結向上。您不能在此處使用R1C1參考。但我認爲這不是問題。

還有一個提示。也可以這樣稱呼它:

Dim Total As Integer 
Total = Application.Sum(Range("A1,B3")) 

以上兩個例子的最大區別在於錯誤處理的方式。使用WorksheetFunction - 任何錯誤都會停止您的程序,使用Application-錯誤將作爲沒有程序剎車的文本拋出。

另一個提示 - 如果你寫WorksheetFunction.(點最後是必不可少的),你會得到約200個功能列表供您使用。如果以Application.開頭,則不會有功能列表,而只是Application Object的方法和屬性。

最後,有關使用WorksheetFunction的更多信息,請參閱this link

編輯還有一件事,這可能很明顯,但要說清楚。總結從A1到B3的連續範圍,您只需要很小的更改:

Dim Total As Integer 
Total = WorksheetFunction.Sum(Range("A1:B3"))