Inquiridor
É possível utilizar Range dentro da uma Function

Pergunta
-
Olá,
Estou fazendo uma function, mas além do resultado na célula, gostaria que me retorna-se outra informação obtida ao longo da function e colocá-la em outra célula.
Isso é possível? O que estou tentando é simplesmente utilizar no meio da Function a função range, mas não estou tendo sucesso.
Não sendo possivel, teria outra forma?
Desde já agradeço.
Function Resultado(dimensao, largura_ref, altura_ref, comprimento_ref, septo_ref, parede_ref, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, media)
Dim i As Integer
Dim rep_individual As Integer
Dim rep_media As Integer
rep_individual = 0
rep_media = 0
Dim unidades(13) As Double
unidades(1) = u1
unidades(2) = u2
unidades(3) = u3
unidades(4) = u4
unidades(5) = u5
unidades(6) = u6
unidades(7) = u7
unidades(8) = u8
unidades(9) = u9
unidades(10) = u10
unidades(11) = u11
unidades(12) = u12
unidades(13) = u13
Select Case dimensao
Case "Largura [cm]:"
For i = 1 To 13
If unidades(i) > (largura_ref + 0.5) Or unidades(i) < (largura_ref - 0.5) Then
rep_individual = rep_individual + 1
End If
Next i
If media > (largura_ref + 0.3) Or media < (largura_ref - 0.3) Then
rep_media = rep_media + 1
End If
If rep_media > 0 Then
Resultado = "Reprovado"
Range("U23") = "Reprovado Média"
ElseIf rep_individual > 2 Then
Resultado = "Reprovado"
Range("U23") = "Reprovado Individual"
Else
Resultado = "Aprovado"
End If
End Select
End Function
Todas as Respostas
-
o correto é usar uma sub para chamar a Function chamá-la através de uma fórmula na célula. Para executar uma ação, deve-se usar Sub. A Function deve ser usada para retornar um valor.
Exemplo:
Public Function Resultado(Byval rep_media as double ) If rep_media > 0 Then Resultado = "Reprovado" End If End Function
sub teste( )
dim media as double
media = 5 if Resultado (media) = "Reprovado" then plan1.range("A1") = "Reprovado Média"
end if end sub
A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com
- Editado AndersonFDiniz2 sábado, 10 de fevereiro de 2018 23:43
- Sugerido como Resposta AndersonFDiniz2 sábado, 10 de fevereiro de 2018 23:43
-
Boa noite Leo.
Conceitualmente o que deseja fazer não é correto: se você cria uma UDF para chamar a partir de uma célula você deve retornar um resultado apenas nesta célula. Se deseja o resultado em duas células, você poderia inserir mais um parâmetro na sua Function para dizer qual das informações deseja retornar, inserindo a fórmula nas duas células (a diferença seria apenas neste parâmetro).
Outra forma (mas não sei se é possível, porque não testei ainda) seria utilizar uma UDF matricial, mas ainda assim tecnicamente a fórmula estaria escrita em ambas as células.
Uma alternativa ao uso das UDF seria utilizar uma SUb e executá-la por um botão ou evento, aí você poderia escrever onde quiser, mas as células deixariam de conter as fórmulas.
Espero que tenha entendido.
Filipe Magno