我编写了一个UDF来计算某些颜色和某些LineStyles的单元格,然后发布整个函数:
Function CountTime(rData As Range, cellRefColor As Range) As Variant
Dim indRefColor As Long
Dim cellCurrent As Range
Dim cntRes As Variant
Application.Volatile
cntRes = 0
indRefColor = cellRefColor.Cells(1, 1).Interior.Color
For Each cellCurrent In rData
If indRefColor = cellCurrent.Interior.Color Then
cntRes = cntRes + 1
End If
If cellCurrent.Borders(xlDiagonalUp).LineStyle <> xlNone Then
cntRes = cntRes + 0.5
End If
Next cellCurrent
CountTime = cntRes
End Function
现在,我遇到的问题是,当其中一个单元格rData
的颜色或线条属性发生更改时,公式不会自动计算。我已经添加了Application.Volatile
,并且我还尝试通过一个Worksheet_Change
子项触发计算,但是这不起作用,因为Excel似乎没有考虑将颜色更改为单元格/工作表的更改。
当用户更改其中的单元格的颜色或线条属性时,是否有任何方法可以使单元格自动计算和更新rData
?
编辑-已解决非常感谢您的理解,ChangeSelection解决方法足以满足我的目的。没想到。而且背景信息也很方便,非常感谢。
我认为这是不可能的,但是一个相当公平的解决方案是当您离开一个单元或更改它时重新计算:
Private Sub Worksheet_Change(ByVal Target As Range)
Me.Calculate
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Calculate
End Sub
或者,可以在工作表上放置一个按钮 Me.Calculate
仅供参考:什么Me
?来源
Me
引用代码所在的父对象。如果您在工作表模块中书写,Me
则将引用该特定工作表。
使用起来Me
很方便,因为我们不必担心工作表名称的更改,这也使以后的代码阅读者容易一点,因为他们不必记住“ Main UserForm”是我们当前正在使用的UserForm。 。Me
如果您提供了全名,则可以对对象应用相同的方法。
在中Sheet1 module
,以下各行的用途相同:
Worksheets("Sheet1").Range("A1").Select
Me.Range("A1").Select
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句