От суб к функции - PullRequest
       1

От суб к функции

1 голос
/ 01 октября 2019

Цель состоит в том, чтобы подсчитать количество комментариев в диапазоне с помощью функции (не подчиненной).

Я пытаюсь преобразовать подчиненную функцию в функцию, так как я хотел бы, чтобы диапазон изменялся ипользователя, чтобы ввести в качестве формулы

Я уже искал в Интернете и получил правильную функцию. Тем не менее, ради обучения нужно знать, почему мой Sub работает, а функция не

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

Это дает общее количество ячеек, а не количество комментариев в диапазоне

1 Ответ

0 голосов
/ 01 октября 2019

Интересный вопрос, я попробовал несколько странных вещей, таких как объявление публичной переменной, затем вызов 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...