Formato moeda no textbox enquanto digita
Este código formato moeda no textbox enquanto você digita funciona da mesma maneira do caixa eletrônico ou internet banking.
O visual do seu formulário vai mudar completamente com esta funcionalidade de interação com a pessoa que digita os valores monetários.
.
História do formato moeda no textbox?
Estava conversando com um amigo e o mesmo estava reclamando que não havia nada na internet em VBA que ajudasse para formatar o textbox enquanto digita.
Quando achava algo parecido era depois que a pessoa saia do campo ou em outra linguagem.
Então para ajudar resolvi eu mesmo fazer, ou seja, como vários outros códigos você só encontra aqui.
Mas afinal pra que serve isso?
E para quem ainda não entendeu basta dizer que o separador das casas (1000.) e a vírgula aparece automaticamente enquanto digita, sem precisar sair do textbox para visualizar a mudança
Código para copiar
Sub formataMoeda() valor = TextBox1.Value 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 If InStr(1, valor, ".") >= 1 Then valor = Replace(valor, ".", "") 'para trabalhar melhor retiramos ponto 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) TextBox1.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
Confesso que me diverti neste exemplo de VBA, fiz até para versão de Excel 2003!
E se vocês olharem bem na verdade é um código que trabalha com texto, um assunto bem trabalhado no ebook.
O código está pronto para ser utilizado! Agora é com você, se gostou então de uma “curtida” e/ou compartilhe.
Talvez você também ache interessante saber sobre Valores Monetários por Extenso , e neste artigo disponibilizei duas planilhas para download.
Segue vídeo explicativo
VBA Texto – Principais funções para usar no vba
Tratamento para excesso de espaço – TRIM
Tratamento para letras maiúsculas e minúsculas – LCASE e UCASE
Tratamento para quebrar letras – LEFT, MID, RIGHT
Tratamento para saber quantidade de letras – LEN
Tratamento para localização de um caractere – INSTR
Bonus – Quebrar texto a partir de um caracter qualquer
Vídeo do Post
Já vimos funções data e se você trabalha e/ou utiliza vba com certeza já precisou manipular textos ou um dia irá precisar e, portanto ótimo post para excelevba.com.br.
Eu usei esta afirmativa, pois é um dos trabalhos mais comuns ter que localizar algum caractere em uma palavra, ou verificar se uma palavra está com excesso de espaço ou ver a quantidade de caracteres que existe ou ainda separar uma palavra de um número ou nome de um sobrenome.
Claro, pois o vba é perfeito para essas situações! Trabalhar arrumando texto, linha por linha de uma tabela “gigante” é muito monótono, chato e suscetível a erros.
Então coloco abaixo as funções mais utilizadas bem como exemplos de como usar essas funções no vba: Lcase, ucase, trim, left, mid, right, len, instr
Vamos ver cada função abaixo:
Tratamento para excesso de espaço – TRIM
Casos de uso:
Em formulários de cadastro, onde o cliente necessita digitar nome e muitas vezes colocam espaço no inicio das palavras.
Exemplo de uso:
Range("a2").value = " João" variavelEspaço = Trim(range("A2").value)
ou seja
variavelEspaço agora possui a palavra “João” sem espaço
Tratamento para letras maiúsculas e minúsculas – LCASE e UCASE
Casos de uso:
O UCase você vai querer usar para transformar palavras ou frases todas em caracteres maiúsculos.
O LCase quando você precisar de todas as letras em minúsculo.
São muito usados para testes usando SE, para testar o que foi digitado e válido .Assim não é preciso usar o SE para frase toda maiúscula, toda minúscula e maiúscula só a primeira letra.
Exemplo de uso UCASE :
Range("b2").value = "empresa fictícia ltda" varMaiuscula = UCase(range("b2").value
resultado -> varMaisucula agora possui a frase: “EMPRESA FICTÍCIA LTDA”
Exemplo de uso LCASE:
Range("b2").value = "LápiS" varMinuscula = LCase(range("C2").value
resultado -> varMinuscula agora possui a palavra: “lápis”
Tratamento para quebrar letras – LEFT, MID, RIGHT
Casos de uso:
Quando é preciso separar alguns caracteres de uma palavra.
Talvez seja mais fácil ver o exemplo abaixo:
Exemplo de uso Left:
Range("a2").value = 112222-3333 varEsquerda = left(Range("a2").value,2)
ou seja
varEsquerda ->> 11
Exemplo de uso Right:
Range("a2").value = 112222-3333 varDireita = right(Range("a2").value,4)
ou seja
varEsquerda ->> 3333
Exemplo de uso Mid:
Range("a2").value = 112222-3333 varMeio = mid(Range("a2").value,3,4)
ou seja
varMeio ->> 2222
Tratamento para saber quantidade de letras – LEN
Casos de uso:
Muitas vezes precisamos saber a quantidade de caracteres existe em uma palavra.
Seja para validar um e-mail, senha.
Exemplo de uso:
Range("a2").value = mail@mail.com.br varQtde = len(range("A2").value)
resultado:
varQtde ->> 16
Tratamento para localização de um caracter – INSTR
Casos de uso:
Caso você precise saber onde está o caracter “@” e assim separar o nome do resto do e-mail. Existe vários outros casos: separar uma palavra que contenha “–“ (hífen) e etc
Exemplo de uso:
Range("a2").value = mail@mail.com.br varLocal = instr(1,range("A2").value,"@")
resultado:
varLocal ->> 5
Bônus – Quebrar um texto a partir de um caracter qualquer
O interessante é você usar as funções juntas, o INSTR com LEFT e etc.
Separar o domínio do e-mail ou separar o ano de uma data e etc.
varEmail = mail@mail.com.br arroba = instr(1, varEmail,"@") qtdeLetras = len(varEmail) nome = right(varEmail, qtdeLetras - arroba)
Segue vídeo do post
Excel Vba Retira Acentos / Letras Maiúsculas
O código abaixo de Excel Vba retira acentos, você pode retirar alguns acentos citados abaixo ou pode aproveitar para substituir letras maiúsculas por minúsculas.
Para fazer alterações conforme sua preferência basta trocar as letras: ou seja pode trocar maiúscula com acento por minuscula e etc, caso você não deseje tantas opções então retire a linha que está excedendo.
Segue Código Retira Acentos
Sub MacroSubstituindoAcentos() Cells.Replace What:="é", Replacement:="e", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="É", Replacement:="E", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="á", Replacement:="a", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Á", Replacement:="A", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Í", Replacement:="I", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Ó", Replacement:="O", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Ã", Replacement:="A", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Ç", Replacement:="C", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Ú", Replacement:="U", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Ô", Replacement:="O", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Ê", Replacement:="E", LookAt:=xlPart, SearchOrder:=xlByRows Cells.Replace What:="Â", Replacement:="A", LookAt:=xlPart, SearchOrder:=xlByRows End Sub
Abrir Arquivo De Texto com vba
Que tal aprender como abrir um arquivo de texto com vba?? Que tal usando a tela do windows para selecionar estes arquivos? Não é muito legal?
Pode ser muito útil em sua rotina de trabalho quando você recebe um pdf (então você passa para texto) e precisa passar para o excel.
Geralmente não é muito agradável de pegar o dados do texto e passar para excel com vba.
Então sendo bem direto segue o código abaixo! Copiem e teste no seu excel vba.
Segue Código para abrir um arquivo de texto com vba
Sub abrirArquivo() MsgBox "Selecione o arquivo txt", vbOKOnly, "Seleção de Arquivo" 'ABRIR ARQUIVO arquivo = " " Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) Dim arquivo_temp As Variant With fd .AllowMultiSelect = True If .Show = -1 Then For Each arquivo_temp In .SelectedItems arquivo = arquivo_temp Next arquivo_temp End If End With Set fd = Nothing 'Abaixo é um código para ajustar as colunas do .txt para o excel que varia conforme cada tipo de arquivo 'Para você saber os seus parametros ideais, uma dica é criar uma macro e abrir um .txt e definir as colunas 'E depois ver o código que foi gerado. Workbooks.OpenText arquivo _ , Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, TextQualifier:=xlDoubleQuote _ , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False _ , Space:=False, Other:=False, FieldInfo:=Array(Array(0, 1), Array(38, 1), _ Array(91, 1)), TrailingMinusNumbers:=True 'Ajuste automatico de coluna do excel Columns("B:B").EntireColumn.AutoFit Columns("A:A").EntireColumn.AutoFit End Sub
Vídeo explicativo do codigo
Valores monetários por extenso
Ótima planilha que traz duas opções para colocar valores monetários (Real e Dólar) por extenso.
Como Tratar Espaços no Vba
Conforme você usa macros no excel ou melhor ainda quando você começa a utilizar vba e excel, então em algum momento você terá que tratar espaços no vba e dentro de sua planilha.
Apesar deste artigo ser curto, existem códigos fundamentais para seu desempenho em vba e seu progresso em programação dentro do excel.
Ao usar o trim, você usa uma função interna que retira os espaços extras do inicio e final de sua frase, veja e aproveite para copiar.
Na segunda parte existe eu mostro um código que raramente é usado, mas é bom saber para não ter que ficar concatenando espaços em seus códigos vba.
‘Retira os espaços extras
Sub RetiraEspaço Dim frase As String frase= " Vou testar o código " 'Observe que a frase acima tem espaço no inicio e final do texto 'Entao vamos retirar os espaços e apresentar a mensagem corrigida, ou seja tratar espaços no vba msgbox Trim(frase) 'Ao exibir irá mostrar: "Vou testar o código" End sub
Obs.: Ltrim e RTrim, também retiram espaços extras, entretanto o primeiro retira esquerda e o segundo da direita
—————————————————————————————
‘Inserir 10 espaços entre as palavras com vba
Sub inserir_espaco Dim Frase Frase = "Relatório de " & Space(10) & " Contabilidade" MsgBox Frase end sub