Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Em Vba - Variável


Guest --Maysa --

Pergunta

Guest --Maysa --

Sou nova em VBA e estou quebrando a Cabeça pra fazer um função que pra vocês aqui deve ser fácil! Estou tentando somar + 1 em uma várivel que inicia em 0 e vai até 10. Cava vez que o botão "CommandButton" for pressionado adicona + 1 na label1. Tentei assim:

Dim Pontos as Integer

Pontos = 0

Label1 = Pontos

Pontos = Pontos + 1

Pontos = Label1

Mas...sei lá...tá faltando alguma coisa. Estou tentando aprende! Alguém pode me ajudar? :o :o

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

o q exatamente ta acontecendo de errado??

bom, mas olha essa parte do codigo:

Dim Pontos as Integer
Pontos = 0[/code] se tdo isso ta dentro do click do botao, essa variavel só serve pra esse evento. depois q ele executa todo o codigo do click, a variavel é limpada da memoria e seu valor é perdido, entende?? alem do mais, você seta ela pra 0 toda vez q ele clica. então toda vez q clicar ela vai comecar no 0. ou seja, ela vai dar sempre 1 quando você somar. a solucao é criar essa variavel valendo para todo o seu formulario. pra isso, delcare ela la em cima em Declarations. agora, olha essa parte aqui:
[code]Label1 = Pontos
Pontos = Pontos + 1
Pontos = Label1
você faz Label1 = Pontos, ou seja você vai setar o valor 0 para o label (já q a variavel Pontos vale 0). ai Pontos = Pontos + 1. você soma, beleza. mas ai você faz Pontos = Label1. nessa hora o valor do Label1 é 0. ou seja você ta gravando 0 de novo na variavel Pontos, ou seja, a soma q você fez não serviu de nd. o codigo deveria ser tipo assim:
Pontos = Pontos + 1
Label1.Caption = Pontos[/code]

primero, você soma e depois poe o valor no label.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Maysa --

Kuroi, realmente agradeço atenção, tudo que você falou, pra quem não entende de linguagem de programação, como é o meu caso, faz sentido. Eu estou aprendendo! Mas eu estou tentando aplicar esta função no VBA do Excel como parâmetro para o meu aprendizado. Você diz:

Dim Pontos as Integer

Pontos = 0

"Declara lá em cima", ou seja, fora do click do botão...mas como? Que procedimento? Uma Sub Rotina não dá porque aí eu estaria caindo no mesmo erro? Fiz o que você disse, mas deu erro "Invalido fora do procedimento"...então...resta a pergunta, se você souber, que procedimento?

Link para o comentário
Compartilhar em outros sites

  • 0

hum, então, era pra declarar la em cima sim, no (Geral). mas so pra declarar, quando você seta o valor (no caso, 0), ai sim tem q ser dentro do procedimento. la em cima é só pra declaracoes.

pra setar o valor 0 (apesar de q não precisaria, pois ele já comeca em 0), no caso do Excel acho q seria em Worksheet_Activate(), q é quando a planilha é ativada (no campo la em cima onde ta o nome do objeto, selecione WorkSheet e ai no evento, no campo da direita, seleciona Activate).

ve se você consegue ai, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Maysa --

Oi, Kuroi, estou aqui de novo! Humm...tá dicicil, cara! Olha só. Declarei a variável "Lá em cima", experimentei no "Módulo" declarando lá numa outra tentativa. Em relação ativar worksheet, não tem razão de ser porque tudo está direcionado para o próprio formulário sem vínculo algum com a planilha. Estou usando UserForm como aprendizado! Fiz tudo direitinho como você sugeriu, aliás, bem dito por você...só declarei "Dim Pontos as Integer" sem setar o "zero" porque por padrão o VBA ordena-o por padrão em zero, ficou:

Declarado: Dim Pontos as Integer

Sub Private CommandButton1_Click ()

Pontos = Pontos + 1

Label1.Caption = Pontos

End Sub

Na label só apareceu o número 1, quando eu cliquei de novo para somar mais 1 e ir a 2...hummm...que nada, ficou nisto mesmo, não passou de um. Acho que a propriedade "Caption" não se aplica aqui, dá erro, sem "Caption" não dá erro, mas também não passo do "1". Tentei o "Label1.Value", mas deu erro"!!! Que coisa, né. Parece uma coisinha fácil, mas tá me deixando irritada e eu não vou desistir enquanto eu não conseguir! Qualquer idéia aí desse lado, manda pra mim, valeu? Obrigado! :(

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Maysa --

Oi, Kuroi, estou aqui de novo! Humm...o negócio aqui tá me dando nos nervos! Olha, fiz tudo certinho como você sugeriu. Fiz a declaração somente em "Dim Pontos as Integer" Lá em cima e em outra tentativa abri módulo e fiz o mesmo sem declarar o "Zero" porque como você bem falou o VBA por padrão já retorna-o em "0"...Bem, olha só, fiz assim para fazer funcionar:

Sub Private CommandButton1_Click ()

Pontos = Pontos + 1

Label1.Caption = Pontos

End Sub

Quando o UserForm se apresento, deu erro em caption. Tirei o "Caption" e daí apareceu "1", fiquei toda boba, apertei de novo esperando o "2", mas...ficou no "1" ainda! Mudei para outro botão, pra vê se o "1" ficou armaznado e nada. Tentei colocar "Label1.Value" e nada! Deu Erro! Sobre ativar a Worksheet, não tem razão de ser porque não tem nenhum vínculo com a planilha, estou experimentando tudo a nível de UserForm, pensando em sua aplicabilidade em outro aplicativo!

Se Por acaso, você tiver uma luz, não desiste de mim, não! To muito afim de ver como isso vai funcionar! Valeu...um abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

hum, se você não ta fazendo na planilha, então seria no UserForm_Initialize() pra zerar.

agora quanto ao seu problema, não sei o q pode estar errado...

você disse q tentou outro botao e não funcionou. mas lembra q quando você executa o formulario, ele carrega o valor da variavel. só q assim q você fecha o formulario (pára a execucao) e volta para o codigo, o valor é perdido. ou seja, a variavel vai comecar do 0 de novo.

bom, mas fiz uns testes aqui, e meu codigo todo ficou assim ó:

Dim Pontos As Integer
Private Sub CommandButton1_Click()
    Pontos = Pontos + 1
    Label1.Caption = Pontos
End Sub
Private Sub UserForm_Initialize()
    Pontos = 0
End Sub[/code]

e funcionou sem problemas, veja ai se da certo pra você, qualquer coisa poste.

ou e se cadastra no forum, tb.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Maysa --

Oi, Kuroi. Bem, fiz tudo como você colocou no seu código, mas não funciona aqui. Declarei no lugar certo, fiz o evento no botão para aparecer na label, mas fica só no "1". Na verdade, parece que aqui ele está fazendo uma simple soma de 1 + 1, nada mais. A variável "Pontos" não está armazenando o resultado e as somas subsequentes do "1" toda vez que o botão é acionado! Será que pode haver alguma coisa com as "References" imbutida no programa e não está acessada, tipo Microsoft ADO, por exemplo. Porque aí funciona e aqui não? Pode ser que funcionasse com a função Uselect de 1 para 10 e podería-se criar condicionais "If" na base do que já estivesse armazenado...mas não armazena nada! De qualquer forma, eu agradeço eu vou pesquisar mais um pouco! Vou me cadastrar neste Forum! Gostei da atenção! Até Breve!

Link para o comentário
Compartilhar em outros sites

  • 0

estranho, tinha q funcionar. referncia não vai influenciar nisso.

o seu codigo não tem alguma coisa a mais não?? pode ter alguma coisa mexendo com o label ou com a variavel.

se o seu codigo tiver diferente daquele q eu passei, posta ele inteiro (todo o conteudo do codigo do UserForm) pra gente conferir

bom se você quiser ver, tem aqui: http://rapidshare.com/files/65398945/Pasta1.xls.html a minha planilha com o codigo feito (no office 2003) e funcionando pra você conferir se esta fazendo igualzinho.

entra la, abre o editor do visual basic, e veja o UserForm1.

bom, garanto q o arquivo la não tem virus nenhum (já q fui eu q fiz), mas se você não quiser arriscar baxar, da uma olhada aqui, como teria q ficar o codigo:

post-9195-1193431285_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...