Página 1 de 1

FORMAT Separador de milhar

Enviado: 05 Abr 2018 às 21:00
por FRF
Pessoal, boa noite!


Tenho uma dúvida sobre o separador de mihar no VBA.

Por exemblo, se eu digitar um numero em um textbox de uma useform sem separador de mihar.
Sendo ele 1000, 10000 ou 1000000.
Como posso usar a função Format para colocar apenas o separador de milhar sem colocar numeros decimais?

FORMAT Separador de milhar

Enviado: 05 Abr 2018 às 22:00
por fcarlosc2018
Boa-noite

Tente assim:

Private Sub TextBox1_AfterUpdate()

On Error Resume Next
'Me.TextBox1 = FormatNumber(Me.TextBox1)
TextBox1 = Format(TextBox1, "R$ #,###0.00")

End Sub

Private Sub TextBox1_Change()

If Not IsNumeric(TextBox11.Text) Then TextBox11.Text = Empty

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

FORMAT Separador de milhar

Enviado: 06 Abr 2018 às 15:49
por FRF
Boa tarde fcarlos2018.

Muito obrigado pela resposta.

Mas já consegui resolver de uma outra maneira.