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

Formato em TextBox


Erika Tímpano

Pergunta

Preciso de ajuda! :wacko:

Estou procurando a solução deste problema há uma semana, mas não encontro em lugar nenhum.

Tenho um Form em EXCEL - VBA e quando inicializo este Form, todas as textbox são carregadas com informações da planilha que está por trás dele e o usuário não tem interface com elas, a não ser pela visualização.

Entretanto, não consigo formatar os controles como moeda.

Já utilizei todas as indicações encontradas em todos os foruns, mas normalmente encontro para o evento change e não para o Initialize.

Não sei qual a diferença pois não sou programadora, mas para o evento que eu preciso, não funciona a expressão abaixo:

Ctotal.text = format(Ctotal.text, "#.###,00")

Onde Ctotal é o nome da textbox.

Quando o form incializa, o depurador dá uma msg de erro dizendo que a variável não foi definida e aponta para Ctotal.

Eu não entendi foi NADA!

Obs: Assim como Ctotal, devo ter mais umas 8 caixas que deverão ser formatadas dentro do mesmo evento.

Se alguém puder me ajudar e me explicar porque isso ocorreu, eu agradeço imensamente.

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

O Código pega as informações da plan que são calculadas de acordo com os imputs do usurário e cola numa area dentro da própria planilha que eu chamei de area de transferência.

Cada caixa de texto do formulário result aberto após o evento abaixo, está linkada a uma Cell desta área de transferência. As Cells estão configuradas corretamente, mas no textbox aparecem com o formato "geral".

É isto que eu não quero. Preciso que ela apareça configurada como moeda, por exemplo.

Se alguém souber uma maneira mais inteligente de fazer isso, agradeço muito.

Private Sub Resultado1_Click()

Sheets("Simulador").Select

'visualizar premio e taxa

Range("B39:F42").Select

Selection.Copy

Range("AI10").Select

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

'visualizar cesta basica e funeral

Range("D48:D49").Select

Selection.Copy

Range("AK15").Select

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

'visualizar resumo do grupo

Range("B13:C19").Select

Selection.Copy

Range("AI18").Select

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

'FORMATAR

'Ctotal.text = format(Ctotal.text, "#.###,00")

result.Show

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

erika, a mascara q você quer acho q seria "#,###.00" e não "#.###,00".

mas quanto ao erro, o textbox esta em um formulario diferente daquele ao qual pertence essa sub??

se estiver, você tem q apontar o nome do formulario antes. exemplo, se o textbox esta no form result, e essa sub q você postou esta em outro formulario, você teria q fazer assim:

result.Ctotal.text = format(result.Ctotal.text, "#.###,00")

mas entenda q o formato sera colocado somente essa vez, e se você alterar o texto dentro do textbox, o formato sera perdido.

nesse caso você teria q aplicar o format de novo apos cada alteracao dentro do textbox.

se o usuario pode digitar nele, o melhor é você por esse codigo do format dentro do evento Exit() do textbox.

EDITADO: dividi o tópico, já q esse é sobre outro assunto, e to movendo pra vba.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigada. Ainda estou aprendendo a usar o Fórum...

Está dando o seguinte erro: Chamada ou Argumento Inválido.

Coloquei a linha da mesma maneira que você escreveu antes do evento show do form.

O usuário não imputa dados neste form (result), ele apenas visualiza.

Tks a lot

Link para o comentário
Compartilhar em outros sites

  • 0

erika, essa mensagem ta estranha, ela ta dando nessa mesma linha, ou é em outra linha??

tente por então essa linha dentro do evento Activate do form result (significa q vai ser executado assim q o formulario for aberto).

de qualquer modo, aqui esta um arquivo q faz exatamente isso q você quer:

erika.rar

abra o arquivo, aperta Alt + F11, rode o UserForm1, e aperte o botao pra você ver a mascara aparecendo certinho.

ai olhe como esta o codigo q eu fiz e ve se você consegue entender o q ta errado no seu.

qualquer coisa poste ai, se você quiser mandar a planilha, ponha num servidor tipo rapidshare e passe o link.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que eu descobri qual é o problema, mas não sei como resolver.

O código que você me enviou é igualzinho ao que eu coloquei na macro, entretanto no meu não está formatando porque a txtbox tem o valor trazido de uma célula através da propriedade Rowsource.

No seu, o valor é input.

PS: A Cell está formatada corretamente.

Link para o comentário
Compartilhar em outros sites

  • 0

não, o problema é q aqui no meu excel (office 2003) o textbox não tem a propriedade RowSource na janela de propriedades e não estou conseguindo seta-la no codigo, então não consigo reproduzir seu problema aqui.

mas eu fiz um teste com o rowsource do listbox e, realmente mesmo com o formato na celula não aparece no listbox.

mas se você tentar dar o Format() direto na celula, deve resolver. exemplo:

Worksheets("Plan1").Range("A1").Value = Format(Worksheets("Plan1").Range("A1").Value, "#,###.00")

Link para o comentário
Compartilhar em outros sites

  • 0

A célula já está formatada corretamente... o problema é o txtbox mesmo.

Utilizei a solução que você me deu num outro tópico usando o listbox. Ficou perfeito...

...mas ainda não aprendi como formatar a txtbox neste excel.

Sem problemas... vou guardar esta solução pra quando trocarem o Office da minha máquina.

Muito obrigada mesmo! :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0
A célula já está formatada corretamente... o problema é o txtbox mesmo.
...mas ainda não aprendi como formatar a txtbox neste excel.

erika, se eu entendi o problema q aconteceu com você, acho q é o seguinte.

em programacao existem (entre muitos outros) dois tipos de dados: texto (String) e numero (Integer, Double, etc).

o tipo texto guarda o texto mesmo. agora o tipo numero guarda o valor, essa é a diferenca.

então, se você armazena o dado numa variavel ou campo numerico, por exemplo, o numero 2.356,50, o q ele guarda é o valor. não existe a mascara (não existe o ponto nem a virgula como texto). quando você poe a mascara (com a funcao Format()), o dado é transformado em String (texto). então 2356,50 é transformado em "2.356,50" por exemplo. não é mais um valor. agora é um texto como "kuroi" ou outro qualquer, entendeu??

agora, no excel, quando você poe um numero na celula, ele já interpreta como sendo do tipo numerico. e quando você poe o formato a partir do excel, ele apenas exibe o texto com a mascara. mas na celula, ele continua gravado como numero (valor).

quando você seta o rowsource, ele entende q o dado esta la como numerico. então a mascara não existe. por isso ele exibe sem formato pra você.

entretanto, se você setar o formato com o formato pelo vba direto na celula, ela é convertida pra string (texto). é esse codigo aqui q eu passei antes:

Worksheets("Plan1").Range("A1").Value = Format(Worksheets("Plan1").Range("A1").Value, "#,###.00")

ai o dado dentro da celula vai estar armazenado como texto. então o formato faz diferenca. então se você setar o rowsource depois de fazer isso, ele deve exibir a mascara certinho sim, pelo menos fiz esse teste aqui e deu certo.

Link para o comentário
Compartilhar em outros sites

  • 0

BRILHANTE!!

Muito obrigada mesmo! :wub:

Pode me ajudar em mais uma coisa?

Se quiser abro um novo tópico, mas preciso que ao executar o aplicativo desenvolvido em excel, não abra a opção desativar macros porque senão, a planilha de calculos ficará exposta.

É possível? :wacko:

Link para o comentário
Compartilhar em outros sites

  • 0
Se quiser abro um novo tópico, mas preciso que ao executar o aplicativo desenvolvido em excel, não abra a opção desativar macros porque senão, a planilha de calculos ficará exposta.

É possível? :wacko:

isso não tem a ver com o outro tópico q você já abriu??

mas então, não acho q tenha como desabilitar essa opcao, e tb não acho q não devia existir como, porque por macro é uma das maneiras mais faceis de espalhar virus ne. tem sempre q dexar o cara desabilitar.

mas abra um novo tópico (ou se for o mesmo assunto do otro tópico, continue la) q sempre pode aparecer alguém com uma solucao.

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...