# Значение ошибки в пользовательской функции VBA - PullRequest
0 голосов
/ 06 сентября 2018

Я пишу функцию для поиска первой строки, которая имеет другой цвет интерьера (с условным форматированием) над текущей активной ячейкой. Функция работает, когда я распечатываю ее с debug.print или msgbox, но не когда я вызываю ее прямо на листе. Первая строка - заголовок, и поэтому я исключаю верхнюю строку.

Public Function blockStart() As Long
    Dim currColor As Long
    currColor = activecell.DisplayFormat.Interior.ColorIndex

    Dim currCol As String
    currCol = Number2Letter(activecell.Column)

    Dim startRow As Long
    startRow = activecell.Row

    'Find Ceiling
    Do While startRow >= 2
        If Range(currCol & startRow).DisplayFormat.Interior.ColorIndex <> currColor Then
            startRow = startRow + 1
            Exit Do
        End If
        startRow = startRow - 1
    Loop

    If startRow = 1 Then startRow = 2   ' at the very top

    blockStart = startRow

End Function

Когда я вызываю функцию прямо на листе, #value запрашивается. Пожалуйста, дайте мне знать, что я делаю не так, спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Чтобы у вас не осталось ощущения, что это невозможно, один из возможных подходов к выполнению того, что вы хотите сделать, - это взять все тело вашей функции BlockStart и поместить его в событие SelectionChange на рабочем листе.Затем вместо строки, которая говорит blockStart = startRow, вы можете присвоить значение startRow ячейке, в которой вы пытаетесь использовать функцию BlockStart.

Если несколько ячеек используют функцию BlockStart, присвойте значениенеиспользуемая ячейка где-то, и другие ячейки ссылаются на нее.

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