Функция Excel UDF не обновляется - PullRequest
0 голосов
/ 01 апреля 2020

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

Вот код:

Function ConCatRange(CellBlock As Range) As String
Application.Volatile True
Dim cell As Range
Dim sbuf As String
    For Each cell In CellBlock
    On Error GoTo fred
    If Len(cell.Text) > 1 Then sbuf = sbuf & cell.Text & Chr(10)
        Next
    ConCatRange = Left(sbuf, Len(sbuf) - 1)
fred:
End Function

Однако, когда ячейки ссылок пустые, не будет показывать # ЗНАЧЕНИЕ! - Это то, что я хочу. Вместо этого он просто не будет обновлять и сохранять данные, которые в последний раз заполняли ячейку.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 02 апреля 2020

Если вы хотите увидеть #VALUE!, просто удалите оператор On Error. Это позволит функции Left() сообщить о своей ошибке.

1 голос
/ 02 апреля 2020

Попробуйте это:

Function ConCatRange(CellBlock As Range) As String
Application.Volatile True
Dim cell As Range
Dim sbuf As String
    For Each cell In CellBlock
    On Error GoTo exitErr
    If Len(cell.Text) = 0 Then GoTo exitErr
    If Len(cell.Text) > 1 Then sbuf = sbuf & cell.Text & Chr(10)
        Next
    ConCatRange = Left(sbuf, Len(sbuf) - 1)
    Exit Function
exitErr:
    ConCatRange = CVErr(xlErrValue)
End Function

В пределах l oop вы проверяете длину текста 0 и, если она находит, возвращает CVErr (xlErrValue) - также известный как "#VALUE!"

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