Arquivo

Posts Tagged ‘Texto’

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.

formato moeda no textboxO 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

máscara moeda vba

formatação formulario

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

Vba Texto

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.

 

retira acentos

 

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.

Moeda real e dolar extenso.xlt

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