Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por JeffersonS
#9561
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
#9567
Olá
Para que a macro identifique o valor de uma variável ou objeto de forms utilizo a função CDBL() ou CDEC().

Exemplo:

CDEC(Box_Valor_Despesa.Value) para valores decimais ou inteiros e CDBL(Box_Valor_Despesa.Value) para valores com casas decimais.
Avatar do usuário
Por Reinaldo
Avatar
#9572
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.
#9599
EDERSONARRUDA2 escreveu:Olá
Para que a macro identifique o valor de uma variável ou objeto de forms utilizo a função CDBL() ou CDEC().

Exemplo:

CDEC(Box_Valor_Despesa.Value) para valores decimais ou inteiros e CDBL(Box_Valor_Despesa.Value) para valores com casas decimais.
Boa noite EdersonArruda,
Tentei utilizar o CDBL conforme porém o valor começou a ficar duplicado.
Segue minha planilha.

http://www.planilhando.com.br/forum/vie ... 06#p100606

Obrigado,
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord