Notifications
Clear all

Gravar dados de TextBox como Número.

7 Posts
3 Usuários
0 Reactions
1,668 Visualizações
(@jeffsj)
Posts: 12
Active Member
Topic starter
 

Hi Experts,

1ª Estou precisando de 2 Helps, quero armazenar o valor de um TextBox (Box_Valor_Despesa) como número, porém até agora sem sucesso, ele sempre grava como texto.

2º Também preciso que ele comece a gravar o valor deste TextBox a partir da linha 34, só que ele sempre tenta gravar antes, a coluna ele faz certo mas a linha não, quando coloco numa aba totalmente em branco ele funciona, porém a aba que eu quero é preenchida até a linha 30, e por algum motivo ele não está gravando os valores.

Alguém consegue me ajudar?

Segue o código abaixo.
................................................................................................................................................
Private Sub Box_Valor_Despesa_Change()

Call formataValor(Box_Valor_Despesa.Value)
End Sub
................................................................................................................................................

Private Sub Btn_Salvar_Click()

If Box_Valor_Despesa = "" Then

'Mensagem solicitando ao usuário que digite o Valor da Despesa
MsgBox "Preencha o campo com o Valor da Despesa"
Box_Valor_Despesa.SetFocus

Else

'Verificando a quantidade de linhas usadas na planilha
cont = Worksheets("teste").UsedRange.Rows.Count + 1

'Selecionando a planilha a ser usada como banco de dados
Worksheets("teste").Select

'Armazenando na planilha os dados inseridos pelo usuário
Cells(cont, 6) = Box_Valor_Despesa

'Limpando os campos após o cadastro da despesa
Box_Valor_Despesa = ""

'Mensagem de gravação concluída
MsgBox "Despesa Cadastrada com Sucesso!"

'Comando para salvar a planilha
ActiveWorkbook.Save

End Inf

End Sub
......................................................................................................................................
Modulo

Sub formataValor(valor)

If IsNumeric(valor) Then
If InStr(1, valor, "-") >= 1 Then valor = Replace(valor, "-", "") 'retira sinal negativo
If InStr(1, valor, ",") >= 1 Then valor = CDbl(Replace(valor, ",", "")) 'retirar a virgula

Select Case Len(valor) 'verifica casas para inserção de ponto
Case 1
numPonto = "00" & valor
Case 2
numPonto = "0" & valor
Case 6 To 8
numPonto = Left(valor, Len(valor) - 5) & "." & Right(valor, 5)
Case 9 To 11
numPonto = inseriPonto(8, valor)
Case 12 To 14
numPonto = inseriPonto(11, valor)
Case Else
numPonto = valor
End Select

numVirgula = Left(numPonto, Len(numPonto) - 2) & "," & Right(numPonto, 2)
Desp.Box_Valor_Despesa.Value = numVirgula
Else
If valor = "" Then Exit Sub
MsgBox "Número invalido", vbCritical, "Caracter Invalido"
Exit Sub

End If
End Sub
.................................................................................................................................................
Function inseriPonto(inicio, valor)
I = Left(valor, Len(valor) - inicio)
m1 = Left(Right(valor, inicio), 3)
m2 = Left(Right(valor, 8), 3)
F = Right(valor, 5)

If (m2 = m1) And (Len(valor) < 12) Then
inseriPonto = I & "." & m1 & "." & F
Else
inseriPonto = I & "." & m1 & "." & m2 & "." & F
End If
End Function

 
Postado : 08/04/2016 10:23 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Também em : http://gurudoexcel.com/forum/viewtopic.php?f=12&t=1864
1.==>Sinceridade, não estou entendendo todo o malabarismo para formatar numérico.
2.==>Para "descobrir" a ultima célula preenchida de uma coluna evite utilizar o UsedRange, o qual varia muito com entrada/exclusão de dados; e pode "devolver" um valor muito diferente do esperado.

E possível postar seu modelo? Utilize dados ficticios porem que sejam representativos de sua planilha.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/04/2016 10:28 am
(@jeffsj)
Posts: 12
Active Member
Topic starter
 

Também em : http://gurudoexcel.com/forum/viewtopic.php?f=12&t=1864
1.==>Sinceridade, não estou entendendo todo o malabarismo para formatar numérico.
2.==>Para "descobrir" a ultima célula preenchida de uma coluna evite utilizar o UsedRange, o qual varia muito com entrada/exclusão de dados; e pode "devolver" um valor muito diferente do esperado.

Boa tarde Reinaldo,
Após eu gravar o valor como número, ele será utilizado para algumas somas. Do jeito que a minha planilha está salvando não consigo somar sem converter os valores.

Obrigado pela ajuda

 
Postado : 08/04/2016 11:17 am
(@mprudencio)
Posts: 2749
Famed Member
 

Para a text box gravar como numero pode ser assim

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ActiveCell.Value = CDbl(Textbox1.Value)

End Sub

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/04/2016 12:19 pm
(@jeffsj)
Posts: 12
Active Member
Topic starter
 

Para a text box gravar como numero pode ser assim

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ActiveCell.Value = CDbl(Textbox1.Value)

End Sub

Boa tarde MPrudencio,
Obrigado pela ajuda, realmente ele gravou como número, só que duplicou o valor.

veja a planilha.
https://drive.google.com/file/d/0B0R8Wi ... sp=sharing

Abs,

 
Postado : 09/04/2016 5:12 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Apague o codigo que enviei e altere essa linha em seu codigo

Armazenando na planilha os dados inseridos pelo usuário
Cells(cont, 6) = CDbl(Box_Valor_Despesa.Value)

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 09/04/2016 6:02 pm
(@jeffsj)
Posts: 12
Active Member
Topic starter
 

Apague o codigo que enviei e altere essa linha em seu codigo

Armazenando na planilha os dados inseridos pelo usuário
Cells(cont, 6) = CDbl(Box_Valor_Despesa.Value)

Bom dia MPrudencio,

Obrigado a alteração no código ficou perfeita.

Para o código que eu citei você tem alguma sugestão para eu conseguir gravar os dados a partir de uma linha especifica.

A colunas estão gravando no lugar certo, porém as linhas eu necessito que começe a gravar os dados do Box_Valor_Despesa a partir da linha d34.

Obrigado,

 
Postado : 10/04/2016 9:07 am