Prezados boa noite,
Estou com dificuldade para passar as variáveis a, b e c para função "calcinverter" onde:
a = Worksheets("Inverter Spec (MIGDI").Range("b4").Value = 1600/3000/5000/12000/20000
b = Worksheets("Inverter Spec (MIGDI").Range("b5").Value = 220/220/220/380/380
c = Worksheets("Inverter Spec (MIGDI").Range("b6").Value = 1500/2700/4000/10000/18000
a função "calcinverter" funciona perfeitamente quando chamada por um célula, porém a intensão é fazê-la atualizar quando algum valor é modificado dentro do workbook. O erro apresentado é TIPO INCOMPATÍVEL DE ARGUMENTO BYREF - ERRO DE COMPILAÇÃO
Sendo assim peço auxílio aos senhores para fazer o link entre o sub e a função!
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
a = Worksheets("Inverter Spec (MIGDI").Range("b4").Value
b = Worksheets("Inverter Spec (MIGDI").Range("b5").Value
c = Worksheets("Inverter Spec (MIGDI").Range("b6").Value
Call calcinverter(a, b, c)
End Sub
Function calcinverter(a As String, b As String, c As String)
Dim xvi() As String
Dim yvi() As String
Dim zvi() As String
Dim i As Integer
Dim ninv(0 To 9) As Single
Dim av() As Single
Dim bv() As Single
Dim cv() As Single
Dim maxpower As Single
Dim minpower As Single
Sheets("System Specification").Select
ninv(0) = Range("B3")
xvi = Split(a, "/")
yvi = Split(b, "/")
zvi = Split(c, "/")
ReDim av(4, UBound(xvi))
ReDim bv(UBound(yvi))
ReDim cv(UBound(zvi))
For i = LBound(xvi) To UBound(xvi)
av(0, i) = CSng(xvi(i))
bv(i) = CSng(yvi(i))
cv(i) = CSng(zvi(i))
av(1, i) = ninv(0) av(0, i)
av(2, i) = ninv(0) Mod av(0, i)
If i > 0 Then
If av(1, i - 1) > av(1, i) And av(1, i) >= 1 Then
ninv(1) = av(1, i)
ninv(2) = av(0, i)
ninv(3) = av(2, i)
ninv(8) = cv(i)
End If
Else
ninv(1) = av(1, i)
ninv(2) = av(0, i)
ninv(3) = av(2, i)
ninv(8) = cv(i)
End If
Next i
If ninv(3) > 0 Then
For i = LBound(xvi) To UBound(xvi)
av(3, i) = ninv(3) av(0, i)
av(4, i) = ninv(3) Mod av(0, i)
If i > 0 Then
If av(4, i - 1) > av(4, i) And av(4, i - 1) > 0 Then
ninv(4) = av(3, i)
ninv(5) = av(0, i)
ninv(6) = av(4, i)
ninv(9) = cv(i)
End If
Else
ninv(4) = av(3, i) + 1
ninv(5) = av(0, i)
ninv(6) = av(4, i)
ninv(9) = cv(i)
End If
Next i
End If
maxpower = ninv(1) * ninv(2) + ninv(4) * ninv(5)
minpower = ninv(1) * ninv(8) + ninv(4) * ninv(9)
ninv(7) = ninv(4) + ninv(1)
Worksheets("System Specification").Range("B13").Value = ninv(7)
End Function
Postado : 04/05/2017 10:32 pm