Notifications
Clear all

Número (Formato de Texto) com separação de "." de milhar

6 Posts
3 Usuários
0 Reactions
1,427 Visualizações
(@leonardo)
Posts: 0
New Member
Topic starter
 

Olá,

Estou precisando de um código VBA que insira o ponto de milhar "." a cada 3 caracteres, pois o número está em formato de texto e preciso que continue ainda neste mesmo
formato (Texto) depois de inserido o ponto "."

Desde já agradeço.

 
Postado : 18/02/2016 7:57 am
(@mprudencio)
Posts: 0
New Member
 

Que mal lhe pergunte pq tem que permanecer como texto???

Fiquei curioso

 
Postado : 18/02/2016 10:05 am
(@leonardo)
Posts: 0
New Member
Topic starter
 

Olá MPrudencio,

Pq quando importo este arquivo em Excel para o Google Drive (Google Sheets), os números ficam em formato americano, ou seja, vírgula "," no lugar do ponto ".".

No aguardo.

 
Postado : 18/02/2016 10:18 am
(@mprudencio)
Posts: 0
New Member
 

Ate onde sei o formato texto depende da digitação do usuario, ou seja para permanecer como vc deseja vai depender da digitação do usuario.

 
Postado : 18/02/2016 11:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde leonardo,

Como não deu muito detalhe da posição e localização das células onde contenham os valores, tenho quase certeza que exista uma maneira bem simples de fazer isso....
Acredito que eu esteja reinventando a roda, mas vê se te ajuda:

Option Explicit

Public Sub Milhar()
Dim Referencia      As String
Dim Intervalo()     As String
Dim RefCelBeg()     As String
Dim RefCelEnd()     As String
Dim Lin             As Long
Dim Col             As Long
Dim i               As Long

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Referencia = Selection.Address(ReferenceStyle:=xlR1C1)
    If InStr(1, Referencia, ":") = 0 Then
        Referencia = Referencia & ":"
        Else: Referencia = Referencia
    End If

    Intervalo = Split(Referencia, ":")
    If Intervalo(1) = Empty Then Intervalo(1) = Intervalo(0)
    RefCelBeg = Split(Mid(Intervalo(0), 2, Len(Intervalo(0))), "C")
    RefCelEnd = Split(Mid(Intervalo(1), 2, Len(Intervalo(1))), "C")

    For Col = RefCelBeg(1) To RefCelEnd(1)
        For Lin = RefCelBeg(0) To RefCelEnd(0)
            ActiveSheet.Cells(Lin, Col).Value = ActiveSheet.Cells(Lin, Col).NumberFormat = "@"
            ActiveSheet.Cells(Lin, Col).Value = Format(ActiveSheet.Cells(Lin, Col), "#,##0")
        Next Lin
    Next Col
    
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub

Vai inserir o ponto somente das células selecionadas.

Qualquer coisa da o grito.
Abraço

 
Postado : 18/02/2016 12:48 pm
(@leonardo)
Posts: 0
New Member
Topic starter
 

Olá Bernardo,

Fiz algumas modificações e está atendendo minha necessidade.

Obrigado.

 
Postado : 18/02/2016 1:16 pm