我正在尝试找到小计或聚合的替代品,它将对一个范围内的所有单元格求和,但那些列被隐藏的单元格除外。由于没有内置函数,我正在尝试创建自己的函数,但遇到了很多困难。我尝试了以下 VBA 代码但无济于事:
Function VISSUM(myRange As range) As Double
On Error Resume Next
Dim i As Variant
Dim mySum As Integer
For Each i In myRange
If myRange.SpecialCells(xlCellTypeVisible) = True Then
mySum = mySum + myRange
End If
Next i
VISSUM = mySum
End Function
这也不管用:
Function mySum(myRange As range) As Double
On Error Resume Next
mySum = Application.WorksheetFunction.Sum(myRange.SpecialCells(xlCellTypeVisible) = True)
End Function
我也搞砸了使用
myRange.EntireColumn.Hidden = False
但没有成功。任何帮助将不胜感激。
你总是可以尝试:
i.entirecolumn.hidden = False
myrange 将检查隐藏和未隐藏的所有内容,因为 I 应该是您处理隐藏或不隐藏的个人范围。
快速修复
Function VISSUM(ByVal myRange As Range) As Double
Dim crg As Range, mySum As Double
For Each crg In myRange.Columns
If crg.Hidden = False Then
mySum = mySum + Application.Sum(crg)
End If
Next crg
VISSUM = mySum
End Function
谢谢 Jonathan,它奏效了,我不知道我是怎么错过这个明显错误的。这就是我最终写的。
函数 VISSUM(myRange As range) As Double 出错继续下一步 变暗我作为变体 Dim mySum 为 Double 对于每个我在 myRange 如果 i.EntireColumn.Hidden = False 那么 我的总和 = 我的总和 + 我 万一 接下来我 VISSUM = mySum 结束功能