我有一個excel udf作爲listobj(excel表)的列之一。當我刷新表格時,我得到的結果是udf是否計算。一些單元重新獲得一些返回值#value。如果我選擇一個#value單元格並在公式欄中單擊並單擊「檢查」,它將正確評估。或者,如果我將它複製到列中,它會正確計算。 我已將工作表更改事件添加到.calculate listobj。excel udf在listobj刷新後不更新
任何建議表示讚賞。
這是我的用戶定義函數。
Function colorscore(dest, score)
Dim scr
scr = score
Select Case scr
Case Is = 99
srcred = 255
srcgreen = 0
srcblue = 0
Case Is > 0
srcred = (1 - scr) * 255
srcgreen = 255 - ((255 - 176) * scr)
srcblue = scr * 80
Case Else
srcred = 255
srcgreen = 255
srcblue = 255
End Select
dest.Parent.Evaluate "ChangeIt2(" & dest.Address(False, False) & "," _
& srcred & "," _
& srcgreen & "," _
& srcblue & "" _
& ")"
colorscore = "Changed sheet!" 'or whatever return value is useful...
End Function
Sub ChangeIt2(c1 As Range, c2red, c2green, c2blue)
c1.Interior.Color = RGB(c2red, c2green, c2blue)
End Sub
這裏的工作表更改事件
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.ListObject Is Nothing Then Exit Sub
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
End Sub
我把縮進與[Rubberduck的SmartIndenter](HTTP代碼的自由: //rubberduckvba.com/Indentation),以便它實際上可讀。充分披露,我是該項目的貢獻者。 – Comintern
@ YowE3K - 不,當我縮進時,當我縮進時「縮進大小寫」設置錯誤,並且在我手動修復時顯然錯過了。哎呀!另一個自動化的好主意......修復。 – Comintern