Mac Excel 2011 VBA UDF не работает - кажется, проблема в команде SET или FIND

Я конвертирую электронную таблицу из Excel 2007 в Mac Excel 2011. Я часами пытался решить свою проблему, но безуспешно, поэтому любая помощь будет принята с благодарностью!

Этот UDF находит строку в диапазоне, затем возвращает значение на одну ячейку ниже найденной ячейки. Команда SET ничего не возвращает в версии для Mac, но работает в Excel 2007.

Function FindRng(Fnd As String)
Application.Volatile

Dim Rng As Range
If Fnd = "" Then
    FindRng = 0
    GoTo 109
End If
With Sheets("Matrix").Range("G2:FZ13")
         Set Rng = .Find(What:=Fnd, _
                After:=.Cells(2, 7), _
                LookIn:=xlValues, _
                LookAt:=xlWhole, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, _
                MatchCase:=False)
    If Not Rng Is Nothing Then
        FindRng = Sheets("Matrix").Cells(Rng.Row + 1, Rng.Column).Value
    Else
        FindRng = 0
    End If
End With

109 End Function

1 ответ

Find не работает в UDF, вызванной из ячейки в 2011 году (та же проблема, которая существовала в версиях для ПК до Office XP), поэтому вам придется либо зацикливаться и тестировать каждую ячейку (загрузка данных в массив должна быть быстрее, чем чтение по ячейкам) или обрабатывать по одной строке за раз, например, с помощью application.match.

Другие вопросы по тегам