Ir para conteúdo
Fórum Script Brasil
  • 0

FORMATA CAMPOS


DANYY

Pergunta

Boa tarde, criei uma macro onde gravo os valores das celulas do excel em um arquivo texto. Nas celulas referente aos valores que preciso gravar no arquivo texto, o formato esta de numero negativo e com virgula, preciso que seja ponto e não virgula.. utilizei o seguinte codigo para que ao gravar o valor no arquivo texto ele preencha com 16 caracteres e zeros a esquerda:

valor = Right(complemento & (ActiveCell.Offset(0, 2).Value * -1), 16)

esse codigo esta funcionando corretamente, porem preciso formatar esse valor para que o mesmo grave no arquivo texto com ponto e não com virgula.. Como devo proceder? Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde, criei uma macro onde gravo os valores das celulas do excel em um arquivo texto. Nas celulas referente aos valores que preciso gravar no arquivo texto, o formato esta de numero negativo e com virgula, preciso que seja ponto e não virgula.. utilizei o seguinte codigo para que ao gravar o valor no arquivo texto ele preencha com 16 caracteres e zeros a esquerda:

valor = Right(complemento & (ActiveCell.Offset(0, 2).Value * -1), 16)

esse codigo esta funcionando corretamente, porem preciso formatar esse valor para que o mesmo grave no arquivo texto com ponto e não com virgula.. Como devo proceder? Desde já agradeço!

Pessoal eu consegui alterar para ponto utilizando o seguinte codigo:

valor = Replace(valor, ",", ".")

Porém ainda tem um problema.. os valores que não tem centavos por exemplo o valor de 120,00, no arquivo texto deveria gravar 0000000000120.00 e no caso esta gravando 0000000000000120

Como devo proceder para que grave os valores considerando os centavos?

Obrigada!

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta usar isso:

Sub CasasDecimais(ByRef valor As String)

valor = Replace(valor, ".", ",")

If InStr(valor, ",") > 0 Then
    Dim partes() As String
    partes = Split(valor, ",")
    
    Select Case Len(partes(1))
        Case Is < 2: partes(1) = partes(1) * 10
        Case Is > 2: partes(1) = Round(CDbl("0," & partes(1)), 2) * 100
    End Select
    
    valor = partes(0) & "." & partes(1)
Else
    valor = valor & ".00"
End If

End Sub
E como a sub recebe um valor por referência, não precisa retornar nada, ela simplesmente trata a variável passada, daí você chama assim:
Call CasasDecimais(valor)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...