Добрый день.
Люди добрые, подскажите пожалуйста.
Есть макрос (во вложении) для подсчета суммы чисел в зависимости от определенных критериев.
Функция номер 1 для расчета суммы в зависимости от столбиков (толщина и ширина)
Function KList(i, P1_1a As Variant, P1_2a As Variant, P2_1a As Variant, P2_2a As Variant) As Double
'Функция обработки Толщина/Ширина
KList = 0
Dim P1_1, P1_2, P2_1, P2_2 As Double
P1_1 = CDbl(Val(P1_1a))
P1_2 = CDbl(Val(P1_2a))
P2_1 = CDbl(Val(P2_1a))
P2_2 = CDbl(Val(P2_2a))
With ActiveSheet
AD = CDbl(Val(.Cells(i, "AD").Text))
AE = CDbl(Val(.Cells(i, "AE").Text))
If (AD >= P1_1) And (AD <= P1_2) Then
If (AE >= P2_1) And (AE <= P2_2) Then
'KList = CDbl(Val(.Cells(i, "AG").Text))
KList = CDbl(.Cells(i, "AG").Value)
End If
End If
End With
End Function
Функция номер 2 для расчета суммы чисел в зависимости от веса и ширины.
Function TList(i, P1_1a As Variant, P1_2a As Variant, P2_1a As Variant, P2_2a As Variant) As Double
'Функция обработки "Вес рулона Макс"/Ширина
TList = 0
Dim P1_1, P1_2, P2_1, P2_2 As Double
P1_1 = CDbl(Val(P1_1a))
P1_2 = CDbl(Val(P1_2a))
P2_1 = CDbl(Val(P2_1a))
P2_2 = CDbl(Val(P2_2a))
With ActiveSheet
CU = CDbl(Val(.Cells(i, "CU").Text))
AE = CDbl(Val(.Cells(i, "AE").Text))
If (CU >= P1_1) And (CU <= P1_2) Then
If (AE >= P2_1) And (AE <= P2_2) Then
TList = CDbl(.Cells(i, "AG").Value)
End If
End If
End With
End Function
Я как чайник в этом деле пытался самостояетельно по аналогии переделать функцию номер 2 и создать из неё функцию номер 3 так скажем. Чтобы она считала мне сумму в зависимости от веса, ширины и ТОЛЩИНЫ.Вот что получилось.
Function TList(i, P1_1a As Variant, P1_2a As Variant, P2_1a As Variant, P2_2a As Variant, P3_1a As Variant, P3_2a As Variant) As Double
'Функция обработки "Вес рулона Макс"/Ширина/Толщина
TList = 0
Dim P1_1, P1_2, P2_1, P2_2, P2_1, P2_2, P3_1, P3_2 As Double
P1_1 = CDbl(Val(P1_1a))
P1_2 = CDbl(Val(P1_2a))
P2_1 = CDbl(Val(P2_1a))
P2_2 = CDbl(Val(P2_2a))
P3_1 = CDbl(Val(P3_1a))
P3_2 = CDbl(Val(P3_2a))
With ActiveSheet
CU = CDbl(Val(.Cells(i, "CU").Text))
AE = CDbl(Val(.Cells(i, "AE").Text))
AD = CDbl(Val(.Cells(i, "AD").Text))
If (CU >= P1_1) And (CU <= P1_2) Then
If (AE >= P2_1) And (AE <= P2_2) Then
If (AD >= P3_1) And (AD <= P3_2) Then
TList = CDbl(.Cells(i, "AG").Value)
End If
End If
End If
End With
End Function
Но по итогу не хочет работать макрос в таком виде. Пишет сообщение
Compile Error. Argument not Optional.