Notifications
Clear all

Chamando Function dentro da Sub

3 Posts
2 Usuários
0 Reactions
1,038 Visualizações
(@valdecirrk)
Posts: 230
Reputable Member
Topic starter
 

boa tarde

acabei criando funções mas estou com dúvidas em fazer com que uma sub chame as funções que criei.
estas são as funções, mas como faço para utilizar na Sub, tenho um botão que carrega as funções nas planilhas , código abaixo, mas ao em vez de carregar com o botão quero fazer o calculo no botão e depois jogar na planilha.

Sub CARREGAR_FORMULAS()

With Sheets("PLAN2")
.Range("B17").FormulaLocal = "=INDICE_FREQUENCIA(B4;B6;B10)"
.Range("B19").FormulaLocal = "=INDICE_GRAVIDADE(E4;E10;E6;E8;B10)"
.Range("G17").FormulaLocal = "=N_ORDEM_FREQUENCIA(B17;E17)"
.Range("G19").FormulaLocal = "=N_ORDEM_GRAVIDADE(B21;E19)"
.Range("B21").FormulaLocal = "=INDICE_CUSTO(E12;B8)"
.Range("B28").FormulaLocal = "=INDICE_COMPOSTO(J20;J42;J63)"
End With

End Sub
Function INDICE_GRAVIDADE(B91 As Double, B94 As Double, B92 As Double, B93 As Double, N_MEDIO As Double)

INDICE_GRAVIDADE = Format((((B91 * 0.1) + (B94 * 0.1) + (B92 * 0.3) + (B93 * 0.5)) * 1000) / N_MEDIO, "0.####")

End Function

Function N_ORDEM_GRAVIDADE(INDICE As Double, N_ORD_GRAVIDADE As Double)

N_ORDEM_GRAVIDADE = (INDICE * N_ORD_GRAVIDADE) / INDICE
ORDEM_GRAVIDADE = N_ORD_GRAVIDADE

End Function

Function PERCENTIL_ORDEM_GRAVIDADE(Nordem As Double, n As Double)
 n = ORDEM_GRAVIDADE
PERCENTIL_ORDEM_GRAVIDADE = 100 * (Nordem - 1) / (n - 1)
PERCENT_GRAVIDADE = PERCENTIL_ORDEM_GRAVIDADE
End Function
Function INDICE_CUSTO(VALOR_BENEF As Double, MASSA_SALAR As Double)
INDICE_CUSTO = (VALOR_BENEF * 1000) / MASSA_SALAR
End Function

Function PERCENTIL_ORDEM_CUSTO(Nordem As Double, n As Double)

n = Sheets("PLAN2").Range("B12").Value
PERCENTIL_ORDEM_CUSTO = 100 * (Nordem - 1) / (n - 1)
PERCENT_CUSTO = PERCENTIL_ORDEM_CUSTO
End Function
 
Postado : 29/06/2016 12:14 pm
(@edsonbr)
Posts: 0
New Member
 

Olá, Valdecirrk

Para usar a function dentro de um módulo, basta atribuí-la a alguma expressão que possa receber seu valor, ou seja, usá-la do lado direito da vírgula em alguma variável ou expressão.

Exemplo: sua function N_ORDEM_GRAVIDADE

Private Sub CommandButton1_Click()
   Dim rg As Range, x As Double
   Set rg = Worksheets("Planilha1").Range("A1")
   x = N_ORDEM_GRAVIDADE(3, 2) + 55
   rg.Value = x * N_ORDEM_GRAVIDADE(1, 1)
End Sub

Note que dentro do VBA vc deve separar os parâmetros com vírgula (diferentemente de no Excel, que usa ponto-e-vírgula). Do mesmo modo, no VBA usa-se o ponto para inserir decimais.

 
Postado : 29/06/2016 2:00 pm
(@edsonbr)
Posts: 0
New Member
 

Valdecirrk, onde eu escrevi "...usá-la do lado direito da vírgula em alguma variável ou expressão." leia-se "...usá-la do lado direito do sinal de igualdade em alguma variável ou expressão."

Vai desculpando aí! ;)

 
Postado : 29/06/2016 5:57 pm