Создание пользовательской функции, которая запускается только на листе, который он использовал? - PullRequest
1 голос
/ 07 марта 2020

Я создал пользовательскую функцию в модуле, чтобы использовать ее в Excel. Я обнаружил, что он работает нормально, за исключением того, что если я go перехожу на другую вкладку и ввожу какие-либо данные, функция запускается с другой вкладки вне текущей вкладки, поэтому я получаю неверные данные.

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

If Not ActiveSheet.Name = Sheets(4).Name Then Exit Function

, который останавливает его работу на другом листе, но это только бинд, так как когда вы go возвращаетесь на место с функцией, он показывает 0 и вам нужно запустить снова, чтобы получить правильные данные. Это также ограничивает его использование только на 1 листе. Как мне сделать так, чтобы fuction использовал только текущий рабочий лист, частью которого он является? Должен быть способ, как нормальные формулы работают следующим образом.

Редактировать: вот код -

Function Indexm(asrng As Range, Mrng As Range, Crng As Range)
For Each cell In asrng
    If cell.Value2 Like Mrng.Value2 & "*" Then
        If IsEmpty(Indexm) Then
            Indexm = Trim(Cells(cell.Row, Crng.Column).Value2)
        Else
            Indexm = Trim(Cells(cell.Row, Crng.Column).Value2) & ", " & Indexm
        End If
    End If
Next
End Function

Таким образом, asrng - это индекс поиска, Mrng - то, что я сопоставляю (начиная с ...), и Crng - это возвращаемое значение, которое я хочу. For l oop проходит через индекс и добавляет каждое совпадение в Indexm, разделяемое запятой, если найдено более 1 совпадения, а затем, наконец, возвращается в ячейку, которая вызывает функцию.

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