VBA – Retornar um Valor de um Subprocedimento
In this Article
Este tutorial demonstrará como retornar um valor de um subprocedimento no VBA.
Um subprocedimento não foi projetado para retornar um valor – é para isso que um procedimento de função é usado. No entanto, pode haver um momento em que você esteja executando algum código em um subprocedimento e precise obter um valor desse subprocedimento. A maneira de fazer isso é usar variáveis de módulo ou globais ou usar um subprocedimento para preencher uma planilha do Excel.
Uso de Variáveis para Retornar um Valor
Você pode declarar variáveis em nível de módulo. Ao fazer isso, essas variáveis podem ser usadas em qualquer lugar dentro do módulo e as variáveis mantêm seus valores. Para declarar uma variável em nível de módulo, basta declarar a variável na parte superior do módulo de código:
Option Explicit
Dim dblQtd as Double
Sub TesteA()
'chamar a sub TesteB
Call TesteB
'mostrar o valor da variável na janela do módulo
Debug.Print dblQtd
End Sub
Sub TesteB()
'preencher a variável do módulo
dblQtd = 900
End Sub
Para juntar tudo isso, executamos o TesteA, que, por sua vez, chamaria o TesteB e nos daria o valor de 900 na janela imediata.
Isso só funciona dentro do módulo, pois a variável foi declarada usando a instrução Dim no nível do módulo.
Variável Global
Você pode declarar a variável em um nível global para usá-la em todos os módulos do projeto.
Uso de um Subprocedimento para Preencher uma Planilha do Excel
Outra maneira de fazer referência a valores calculados a partir de um subprocedimento é simplesmente gravar os dados em uma planilha do Excel e, em seguida, fazer referência a esses dados em outro procedimento.
Sub PreencherIntervalo()
Range("A1") = "Produto"
Range("B1") = "Quantidade"
Range("C1") = "Custo"
End Sub
Em seguida, é possível fazer referência a esses valores em outro procedimento, referenciando os valores das células:
Sub RecuperarIntervalor()
Dim Produto as String, Quant as String, Custo as String
Produto = Range("A1")
Quant = Range("B1")
Custo = Range("C1")
End Sub