比如,我想创建一个函数用于合计总和(类似 sum 函数) 我自己以前学过一点vb,所以会写一些简单的代码,但是仅限个体的运算。比如以下截图内容,两个数、三个数合计总和,我会直接用a+b或者a+b+c来表达.... 但是如果是一个区域所有单元格的合计运算,我完全没有头绪应该怎样写这个表达式... ........ 上网百度了一下,有说用 range 数据类型去定义,但是后面的表达式没有写出来,我还是不知道怎样做 望各位大神赐教,谢谢
Sub test() For Each Rng In Range("A1:C3") Debug.Print Rng.Interior.ColorIndex If Rng.Interior.ColorIndex = 3 Then result = result + Rng.Value End If Next Debug.Print result End Sub
Private Function colorsum(area As Range) As Integer Application.Volatile Dim a As Integer a = 0 For Each Rng In area If Rng.Interior.ColorIndex = 6 Then a = a + Rng End If Next colorsum = a End Function PS:唯一美中不足的地方就是,这个函数即便加了“Application.Volatile”这段话进去,还是不能实现自动重算。改变黄色底纹单元格内容可以自动重算,但是如果我直接改变的是某个单元格的底纹颜色为黄色,不能自动重算。只能在选项那里选择"手动重算"并且勾选上"保存工作簿前重新计算",再通过保存excel文件来触发它重算....