Declaração de Funções NÃO funciona  [Resolvido]

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Declaração de Funções NÃO funciona

Mensagempor shinohara » Qua Mai 16, 2018 2:21 pm

Amigos, boa tarde. Utilizo VBA versão 7.1.
Windows 7 e Office 2013.

Não estou conseguindo fazer a declaração de argumentos para funções. Por exemplo:
Código: Selecionar todos
Sub Func(ByVal nome as String, ByVal idade as integer)

Essa sub função NÃO devolve os valores de 'nome' e 'idade' para a função principal.

FIz isso durante anos mas agora neste computador novo não consigo.

Alguém poderia ajudar?
Editado pela última vez por wagner em Qua Mai 16, 2018 3:01 pm, em um total de 1 vez.
Razão: Códigos VBA devem ser inseridos com a TAG CODE existente no início da caixa de mensagens.
shinohara
Membro
Membro
 
Mensagens: 5
Registrado em: Qua Mai 02, 2018 11:29 am
Has thanked: 5 times
Have thanks: 0 time

{ SO_SELECT }

Re: Declaração de Funções NÃO funciona

Mensagempor xlarruda » Qua Mai 16, 2018 3:04 pm

A linha do seu código parece uma função, mas você inicia com Sub. É isso mesmo?
___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como RESOLVIDO.

Att.

André Arruda

For this post the author xlarruda thanked:
shinohara (Qua Mai 16, 2018 7:10 pm)
Avatar do usuário
xlarruda
Membro
Membro
 
Mensagens: 638
Registrado em: Qua Out 04, 2017 9:41 am
Localização: Cuiabá-MT
Has thanked: 89 times
Have thanks: 251 times

Re: Declaração de Funções NÃO funciona

Mensagempor wagner » Qua Mai 16, 2018 3:04 pm

shinohara,

Boa tarde!

Assim, só com esse pedaço de código... fica meio difícil!

Palpite: Retire esse "Sub" da frente e atribua o que a função deve retornar. Por exemplo:

Código: Selecionar todos
Func(ByVal nome as String, ByVal idade as integer) As Integer
Se a resposta foi útil para você, por gentileza, Amigo, clique na mãozinha ao lado direito da ferramenta CITAR, no canto superior direito.

Atenciosamente
Wagner Morel

For this post the author wagner thanked:
shinohara (Qua Mai 16, 2018 3:44 pm)
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 4125
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 69 times
Have thanks: 1790 times

Re: Declaração de Funções NÃO funciona

Mensagempor shinohara » Qua Mai 16, 2018 3:45 pm

Muito obrigado por responder, meu caro. Não consigo rodar algo tão simples quanto isso:

---------------------------------------------------------------------------------
Código: Selecionar todos
Sub main()
apresentacao nome, idade
MsgBox "Meu nome é: " & nome & "e minha idade é: " & idade
End Sub

Sub apresentacao(ByVal nome As String, ByVal idade As Integer)
nome = InputBox("Digite seu nome: ")
idade = InputBox("Digite sua idade: ")
End Sub
Editado pela última vez por wagner em Qua Mai 16, 2018 6:42 pm, em um total de 1 vez.
Razão: Códigos VBA devem ser inseridos com o uso da ferramenta CODE
shinohara
Membro
Membro
 
Mensagens: 5
Registrado em: Qua Mai 02, 2018 11:29 am
Has thanked: 5 times
Have thanks: 0 time

Re: Declaração de Funções NÃO funciona

Mensagempor klarc28 » Qua Mai 16, 2018 3:48 pm

Function é para retornar valores.
Sub é para executar ações.

Exemplo de uma Sub:

Código: Selecionar todos
Sub apresentacao()
dim nome as string
dim idade as double
nome = InputBox("Digite seu nome: ")
idade = cdbl(InputBox("Digite sua idade: "))
MsgBox "Meu nome é: " & nome & " e minha idade é: " & idade
End Sub


Exemplo de uma Function:

Código: Selecionar todos
Public Function Faixa( ByVal idade as Integer) As String

if idade >= 18 then

Faixa = "Adulto"

else

Faixa = "Menor de Idade"

end if
End Function


Exemplo de chamada da Function:

Código: Selecionar todos

Sub Atualizar (  )


textbox1.text = Faixa(cint(textbox2.text))

End Sub


Quando quiser agradecer, clique no joinha. Marque como resolvido na parte que resolveu sua dúvida.

For this post the author klarc28 thanked:
shinohara (Qua Mai 16, 2018 7:06 pm)
klarc28
Membro
Membro
 
Mensagens: 966
Registrado em: Sáb Dez 09, 2017 12:33 am
Has thanked: 20 times
Have thanks: 402 times

Re: Declaração de Funções NÃO funciona

Mensagempor xlarruda » Qua Mai 16, 2018 5:03 pm

Se quer puxar o valor da variável de outra sub use "ByRef" ao invés de ByVal. Assim:

Código: Selecionar todos
Sub apresentacao(ByRef nome As String, ByRef idade As Integer)
nome = InputBox("Digite seu nome: ")
idade = InputBox("Digite sua idade: ")
End Sub

Código: Selecionar todos
Sub main()
Dim nome as String
Dim idade as Integer
apresentacao nome, idade
MsgBox "Meu nome é: " & nome & "e minha idade é: " & idade
End Sub
___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como RESOLVIDO.

Att.

André Arruda

For this post the author xlarruda thanked:
shinohara (Qua Mai 16, 2018 7:06 pm)
Avatar do usuário
xlarruda
Membro
Membro
 
Mensagens: 638
Registrado em: Qua Out 04, 2017 9:41 am
Localização: Cuiabá-MT
Has thanked: 89 times
Have thanks: 251 times

Re: Declaração de Funções NÃO funciona  [Resolvido]

Mensagempor EdsonBR » Qua Mai 16, 2018 5:14 pm

Nesse caso, passe os parâmetros por Referência ao invés de por Valor: substitua ByVal por ByRef

Ou então declare nome e idade como variáveis globais (na área de declaração).

Obs.: é necessário dimensionar as variáveis do com o mesmo tipo que foi declarada na Sub ou Function.

Código: Selecionar todos
Sub main()
  Dim nome As String, idade As Integer
  apresentacao nome, idade
  MsgBox "Meu nome é: " & nome & "e minha idade é: " & idade
End Sub
Sub apresentacao(ByRef nome As String, ByRef idade As Integer)
  nome = InputBox("Digite seu nome: ")
  idade = InputBox("Digite sua idade: ")
End Sub
Editado pela última vez por wagner em Qua Mai 16, 2018 6:44 pm, em um total de 1 vez.
Razão: Não é necessário usar citações de inteiro teor das mensagens

For this post the author EdsonBR thanked:
shinohara (Qua Mai 16, 2018 7:09 pm)
Avatar do usuário
EdsonBR
Membro
Membro
 
Mensagens: 496
Registrado em: Qui Nov 05, 2015 11:43 pm
Localização: Joinville, SC
Has thanked: 100 times
Have thanks: 293 times

Re: Declaração de Funções NÃO funciona

Mensagempor EdsonBR » Qua Mai 16, 2018 5:16 pm

Desculpa aí, Xlarruda... atravessei a resposta pq não vi a sua.
Avatar do usuário
EdsonBR
Membro
Membro
 
Mensagens: 496
Registrado em: Qui Nov 05, 2015 11:43 pm
Localização: Joinville, SC
Has thanked: 100 times
Have thanks: 293 times

Re: Declaração de Funções NÃO funciona

Mensagempor xlarruda » Qua Mai 16, 2018 5:26 pm

Que nada Colega EdsonBR, quanto mais informação melhor.

Além do mais, você é o cara! Abrç!
___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como RESOLVIDO.

Att.

André Arruda
Avatar do usuário
xlarruda
Membro
Membro
 
Mensagens: 638
Registrado em: Qua Out 04, 2017 9:41 am
Localização: Cuiabá-MT
Has thanked: 89 times
Have thanks: 251 times

Re: Declaração de Funções NÃO funciona

Mensagempor wagner » Qua Mai 16, 2018 6:48 pm

Caros colegas,

Boa noite!

Pedimos, por gentileza, não utilizar citações de inteiro teor das mensagens que lhes são encaminhadas. As citações devem se restringir a trechos estritamente necessários ao entendimento da mensagem que se deseja enviar.

Pedimos ainda que os códigos VBA aqui inseridos sejam colocados dentro da ferramenta CODE existente logo acima da caixa de mensagens (quinto botão da esquerda para a direita).
Se a resposta foi útil para você, por gentileza, Amigo, clique na mãozinha ao lado direito da ferramenta CITAR, no canto superior direito.

Atenciosamente
Wagner Morel
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 4125
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 69 times
Have thanks: 1790 times


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 3 visitantes