VBA - индекс SumProduct с ошибкой - PullRequest
0 голосов
/ 24 февраля 2019

Я новичок в VBA и сейчас работаю над пользовательской формой, в которой есть 3 комбинированных списка, по которым пользователь выбирает по 1 элементу из каждого.Цель состоит в том, чтобы код нашел соответствующее 4-е значение в электронной таблице и вернул его в текстовое поле пользовательской формы.Прямо сейчас я получаю «Несоответствие типов (Ошибка 13):»

Я возился с этим из-за 3 дня.Некоторые веб-сайты говорят, что функция SumProduct не работает в VBA, некоторые говорят, что она работает до тех пор, пока вы указываете «WorkSheetFunction», и все же некоторые говорят, что вместо этого следует использовать «оценить».Как в этом посте: SUMPRODUCT Формула в VBA (мне не очень повезло с использованием «оценки», но мой синтаксис мог быть выключен)

В любом случае, я создал быстрый пример, чтобы показатьчто я пытаюсь сделатьЕсли кто-то может помочь, это будет очень цениться. worksheetdata

это код, который я пробовал:

Private Sub TestButton_Click()
textboxTesting.Text =    Application.WorkSheetFucntion.Index(Range("Thickness"), _
Application.WorkSheetFucntion.SumProduct((Range("Wood") = "Oak") _
* (Range("Metal") = "Copper") * (Range("Box") = "Red")), 0)
End Sub

1 Ответ

0 голосов
/ 24 февраля 2019

Лучше всего написать собственную функцию, я думаю, что ниже гораздо понятнее:

Sub Test()
    Dim thickness

    thickness = FindThickness("oak", "copper", "red")

    MsgBox (thickness)
End Sub

Function FindThickness(wood As String, metal As String, box As String) As String

    Dim rng As Range

    Set rng = Range("Wood")

    For Each cell In rng
        If cell.Value = wood _
        And cell.Offset(0, 1).Value = metal _
        And cell.Offset(0, 3).Value = box Then

            FindThickness = cell.Offset(0, 2).Value
            Exit Function

        End If

    Next cell

End Function
...