目标是计算具有功能(而不是子功能)的范围内的注释数。
我想将Sub转换为Function,因为我希望范围可以变化,并且用户希望以公式形式输入
我已经在互联网上搜索并获得了正确的功能。但是,为了学习,需要知道为什么我的Sub起作用而Function不能起作用
Function CommentsCounter(myRange3 As Range) As Long
'This one is mine - not working
CommentsCounter = myRange3.SpecialCells(xlCellTypeComments).Count
End Function
Sub working_just_fine()
'This one is working
Dim myRange4 As Range
Set myRange4 = Range("CO1:CO497")
Range("CO505").Value = myRange4.SpecialCells(xlCellTypeComments).Count
End Sub
它给出的是单元格总数而不是范围内的注释数
答案 0 :(得分:0)
有趣的问题,我尝试了一些奇怪的事情,例如声明一个公共变量,然后从Sub
调用Function
并将SpecialCells.Count
的结果放入公共变量并从中访问Function
。令人惊讶的是,与分别调用Sub
相比,从Function
调用Sub
的结果不同。作为解决方案,此Function
应该完成您要达到的目标,尽管在很大的范围内可能会有点慢,因为它会遍历范围内的每个单元格(我尚未进行广泛的测试就可以了)
Function CommentsCounter(myRange3 As Range) As Long
CommentsCounter = 0
For Each rngCell In myRange3
If Not rngCell.Comment Is Nothing Then CommentsCounter = CommentsCounter + 1
Next
End Function