Вам необходимо объявить ваши массивы как вариант, а затем использовать Cdbl, чтобы сделать его двойным при переходе к функции.
Function sigmoid(X As Double) As Double
sigmoid = 1 / (1 + Exp(-X))
End Function
Sub arraymult()
Dim i(0 To 2, 0 To 0) As Double
Dim w(0 To 1, 0 To 2) As Double
i(0, 0) = 1
i(1, 0) = 2
i(2, 0) = 6
w(0, 0) = 2
w(0, 1) = 1
w(0, 2) = 1
w(1, 0) = 1
w(1, 1) = 1
w(1, 2) = 1
Dim h() As Variant
h = Application.WorksheetFunction.MMult(w, i)
Dim h1() As Variant
ReDim h1(0 To 0, LBound(h, 1) To UBound(h, 1))
For j = LBound(h, 1) To UBound(h, 1)
h1(0, j) = sigmoid(CDbl(h(j, 1))) 'problem here
Next j
End Sub
