張貼者:2010年5月29日 上午6:15Administrator ExcelHelp
[
已更新 2010年5月29日 上午6:15
]
一個自訂的函數只會在參數更改時重算,如果你想它在任何數值更改後都更新的話,你可以在程式碼加進: Application.Volatile 把這個函數設定為volatile(有概是易變的意思)。這句的可以在函數內任何位置,但建議你放在前方,方便閱讀。
加了Volatile之後,每當工作表有更改,Excel都會重算。
在這個例子當中,更改語言的選擇,便可以看到 volatile 與非 volatile 函數的分別。
非volatile的函數(方法1),只會在參數更改時才會重算,所以對語言的選擇沒有反應。除非是volatile的函數(方法2),又或參數內包含有關的變數(方法3)。
原來: 
更改語言後: 
看看程式碼,就知道它們有什麼分別:
語法:
' 方法1:只會在參數rEnglishDesc有更改時,才會觸動Excel去重算此函數 Function DescNonV(rEnglishDesc As Range) As String Select Case Range("LangChoice") Case Is = 1 DescNonV = rEnglishDesc.value Case Is = 2 DescNonV = rEnglishDesc.Cells(1, 2).value End Select End Function
' 方法2:每當工作表有更新時,Excel都會重算此自訂函數。 Function DescV(rEnglishDesc As Range) As String Application.Volatile Select Case Range("LangChoice") Case Is = 1 DescV = rEnglishDesc.value Case Is = 2 DescV = rEnglishDesc.Cells(1, 2).value End Select End Function
' 方法3:由於參數包括語言的選擇,所以當用戶選擇了不同的語言時,Excel會重算此函數。 Function Desc(iChoice As Integer, rEnglishDesc As Range) As String Select Case iChoice Case Is = 1 Desc = rEnglishDesc.value Case Is = 2 Desc = rEnglishDesc.Cells(1, 2).value End Select End Function
|
|
|
|
|
|
|
 Updating...
Ĉ Administrator ExcelHelp, 2010年5月29日 上午6:16
|