Функция без параметров - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть эта функция, которая подсчитывает диапазон ячеек по цветному тексту. Оригинальная функция использует два входа (диапазон и цвет текста) в качестве параметров. Поскольку я использую его в разных строках, я хочу, чтобы динамический диапазон ячеек вычислялся автоматически, но я не знаю, как управлять этими параметрами внутри функции vba. Это мой код Надеюсь, кто-нибудь может мне помочь ... С уважением, М.

Function CountByColor()
'Function CountByColor(rng, cell)
Application.Volatile

Set MyCell = ActiveCell.Address

ActiveCell.Offset(-1, -2).Select
Range(Selection, Selection.End(xlUp)).Select
Set MyRange = ActiveSheet.UsedRange

'Set zRange = rng

Set zRange = MyRange
Set zCell = MyCell.Offset(0, -1)

zValue = cell.Value
zFontColor = zCell.font.color
zCellColor = zCell.Interior.color

CountByColor = 0

On Error Resume Next
For Each cell In zRange
    If cell.Value = zValue Then
        If cell.font.color = zFontColor Then
            If cell.Interior.color = zCellColor Then
            CountByColor = CountByColor + 1
            End If
        End If
    End If
Next
On Error GoTo 0

End Function

Параметр диапазона создается с помощью «activecell.offset (-1, -2) .select», а текстовая ячейка с цветными ссылками - «mycell.offset (0, -1) ...

».

Это мой рабочий лист ...

1 Ответ

0 голосов
/ 07 ноября 2018

Вот один из подходов (немного упрощенный из вашего кода ...)

Function countcolor()
    Dim clr As Long, rng As Range, c As Range, rv As Long

    With Application.ThisCell '<< ThisCell is the cell calling the function
        clr = .Offset(0, -1).Interior.Color '<< color to look for...
        Set rng = .Parent.Range(.Offset(-1, -2), .Offset(-1, -2).End(xlUp))
    End With

    For Each c In rng.Resize(, 100).Cells '<< adjust resizing to suit...
        If c.Interior.Color = clr Then rv = rv + 1
    Next c

    countcolor = rv

End Function

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...