У меня есть массив, где в столбце А перечислены разные названия статей. Теперь я хочу сложить значения, соответствующие некоторым из этих названий статей. Поскольку количество имен статей не является постоянным, я передаю имена в виде ParamArray.
Все это хорошо работает для элементов от одного до конца ParamArray, но появляется сообщение об ошибке «Переменная объекта или переменная блока не установлена», когда я пытаюсь найти строку номера статьи, помещенную в ParamArray (0) , Тем не менее, доступ к ParamArray (0) не является проблемой, но Vba отказывается найти соответствующую строку.
Вот код, вызывающий функцию (col_ML - это столбец суммируемых значений):
.Cells(63, col_year).Value = Compute_sum_ML(col_ML, "17.8.32.000", "17.8.42.000")
Вот сама функция:
Function Compute_sum_ML(col_ML As Integer, ParamArray article() As Variant) As Double
Dim row_article As Integer
Dim result As Double
row_article = 0
result = 0
For i = 0 To UBound(article, 1)
row_article = d_ML.Range("A:A").Find(What:=article(i),LookIn:=xlValues).row
If row_article <> 0 Then
result = result + d_ML.Cells(row_article, col_ML).Value
End If
Next i
Compute_sum_ML = result
End Function
Также я попытался определить ParamArray как строку, поскольку ему будут переданы только строки, но это вынуждает меня определить его как вариант.