Vídeo recomendado
https://youtu.be/diWPPPhW-9E

TextBox armazena como texto

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
WagnerGuardia
Colaborador
Colaborador
Mensagens: 27
Registrado em: Sex Fev 04, 2011 4:41 pm
Localização: São Paulo

TextBox armazena como texto

Mensagem por WagnerGuardia »

Pessoal, dei uma boa olhada no fórum e apliquei as sugestões, porém não armazena de jeito nenhum, envio a planilha para que verifiquem o que estou fazendo de errado.

Textbox esta armazenando como texto ao invés de número.

E porque a textbox de valores não acrescenta o zero quanto o preço da gasolina é R$ 1,70, ela fica R$ 1,7 :(
Anexos
CONTROLE DE ABASTECIMENTO FORUM.7z
(45.66 KiB) Baixado 228 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: TextBox armazena como texto

Mensagem por Reinaldo »

Wagner, por padrão um TextBox, como o nome ("Caixa de Texto") já "diz", sempre irá "armazenar/passar" seu conteúdo como Texto.
Se o conteúdo é um valor numérico e/ou data/hora, o mesmo deve ser formatado após inclusão.
Veja em seu projeto o TextBox Data, nomeado como "Caixa_data" e formatado durante a digitação para ter um visual como uma data; porem ser checar/questionar se é uma data valida:

Código: Selecionar todos

Private Sub Caixa_Data_Change()
    If Len(Caixa_data.Text) = 2 Then
        Caixa_data = Caixa_data + "/"
    End If
    If Len(Caixa_data.Text) = 5 Then
        Caixa_data = Caixa_data + "/"
    End If
End Sub
O mesmo ocorre com os campos valores, por exemplo TexBox valor total, nomeada como: ==> "Caixa_valortotal", é formatada ao sair do controle (evento Exit):

Código: Selecionar todos

Private Sub Caixa_valortotal_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'Formatar a Caixa em Valores
    Caixa_valortotal = Format(Caixa_valortotal, "R$ #.##")
End Sub
Porem essa formatação ("#.##") informa/determina mostrar até duas casas, desde que cada casa tenha/seja um valor significante (>0).
Valor como 1,31 será exibido como R$ 1,31; porem 1,30 será exibido R$ 1,3 e valor 1,00 será exibido R$ 1,

Acredito que a melhor formatação para seu caso é: "#.00"

Código: Selecionar todos

Private Sub Caixa_valortotal_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'Formatar a Caixa em Valores
    Caixa_valortotal = Format(Caixa_valortotal, "R$ #.00")
End Sub
Valores como 1,31, 1,30 e 1,00 serão exibidos como R$ 1,31 / R$ 1,30 /R$ 1,00 respectivamente


WagnerGuardia
Colaborador
Colaborador
Mensagens: 27
Registrado em: Sex Fev 04, 2011 4:41 pm
Localização: São Paulo

Re: TextBox armazena como texto

Mensagem por WagnerGuardia »

E como eu formatado após inclusão como numero?
Eu vi num video que fazendo assim daria certo

Private Sub Caixa_quantidade_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Formata a caixa em Números
Caixa_quantidade = Format(Caixa_quantidade, "0")
End Sub

mas quando vou na planilha ta como texto e mesmo se eu for la e mudar para numero, não volta. eu tenho que clicar duas vezes ou selecionar a opção do erro indicado quando eu coloco o cursor em cima da celula.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: TextBox armazena como texto

Mensagem por Reinaldo »

Vamos lá;
"...Textbox esta armazenando como texto ao invés de número..."
Como "disse" anteriormente uma TextBox Sempre considera seu conteúdo como texto.
"...Eu vi num video que fazendo assim daria certo..."
A rotina comentada não formata a Text em números, mas sim a apresentação visual do conteúdo da TextBox como numero; internamente o valor do TextBox ainda é considerado texto.
"...mas quando vou na planilha ta como texto..."
Aqui temos uma nova duvida, não mencionada inicialmente; que e recorrente, neste e no demais fóruns que participo.
Ao "transferir" o conteudo da(s) Texbox(s) do formulário para a planilha, o Excel por vezes "tenta" converter o dado recebido para um valor conhecido (tipo data, numeros..) porem nem sempre esse reconhecimento é efetuado a contento.
Para que, ao gravar na planilha, os dados sejam considerados conforme se deseja/espera deve-se utilizar mecanismos de conversão, tipo cDec/cDbl para números / Cdate para datas( detalhes sobre essas funções veja o help VBA, com o cursor posicionado sobre a string/texto tecle F1)
experimente na rotina que insere na planilha utilizar +/- assim:

Cells(Linha, 9) = cdbl(Caixa_valorunit)
ou ainda
Cells(Linha, 9) = Caixa_valorunit *1


Obs.: Eventualmente valores formatados com "R$" / "U$" / "%" ... devem ter essas "siglas" retiradas, para uma correta conversão.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


WagnerGuardia
Colaborador
Colaborador
Mensagens: 27
Registrado em: Sex Fev 04, 2011 4:41 pm
Localização: São Paulo

Re: TextBox armazena como texto

Mensagem por WagnerGuardia »

Maravilha, deu certo! Valeu!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder