Pergunte aqui
1

BASIC: Formatar números em Moeda

perguntadas 2019-02-16 18:48:15 +0200

imagem do gravatar de Marco Salles

updated 2019-03-01 18:00:46 +0200

Gostaria de acrescentar o simbolo da Moeda no texto retornado pelo MsgBox

     Dim eCustoAtual As Double
     MsgBox "Para este Preço Sugerido o Lucro Sera Negativo !!!!!"_
     & Chr(13) &"O Preço Sugerido Mínimo que se deve inserir , para "_
     & chr(13) &"que o Lucro seja MAIOR que ZERO deve ser :"_ 
     & Format( eCustoAtual,"##,##0.00"), 16, "A T E N Ç Ã O"

Note que estou usando um Format , mas gostaria mesmo que a formatação fosse do tipo formarCurrency

Obg

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

1

respondidas 2019-02-16 19:20:52 +0200

updated 2019-02-18 21:01:56 +0200

Creio que alteração, nesta linha, revolva...

& chr(13) &"que o Lucro seja MAIOR que ZERO deve ser : R$ "_

Complemento

. Na Planilha em uma célula nomeada MOEDA, coloque a informação "R$ ", sem os parênteses.

   Sub Main
' vai para a célula nomeada MOEDA   
Dim document As Object
Dim dispatcher As Object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "MOEDA"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
'Pegar String Celula Atual
Dim oSel as Object
    oSel = ThisComponent.getCurrentSelection()
'   MsgBox oSel.getString()
    Var1 = oSel.getString()

     Dim eCustoAtual As Double
     MsgBox "Para este Preço Sugerido o Lucro Sera Negativo !!!!!"_
     & Chr(13) &"O Preço Sugerido Mínimo que se deve inserir , para "_
     & chr(13) &"que o Lucro seja MAIOR que ZERO deve ser : " & Var1 _ 
     & Format( eCustoAtual, "##,##0.00"), 16, "A T E N Ç Ã O"     
End Sub

.

Descrição da imagem


Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

editar assinalar como ofensivo Excluir Link mais

Comentários

Então . Não gostaria de engessar o código ( o que é quase impossível não fazer no libreoffice) mas ao colocar um "R$" concatenado a String fico restrito somente a moeda local . Caso mude a base meonetária o código tem ue ser reescrito ... Gostaria mesmo de usar o Currency . Sei que é possivel mas não sei como . Muito Obrigado pela sua contribuição Gilberto

imagem do gravatar de Marco SallesMarco Salles ( 2019-02-16 19:36:44 +0200 )editar

E SE pegar a informação de uma célula, da planilha ?

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-02-17 22:15:05 +0200 )editar

A célula em questão esta concatenada com Strings mais Moeda ... Não consigo Formatar com Format a não ser que trabalhe no conteudo da célula via programação . Não é isso que gostaria , e sim na Linguagem Basic do Libre office . Obrigado Gilberto

imagem do gravatar de Marco SallesMarco Salles ( 2019-02-18 16:43:50 +0200 )editar

De qualquer forma em algum momento vc vai precisar indicar o tipo de moeda que está usando. E vai precisar alterar o código pra essa nova moeda. Acho que para usar várias moedas o mais prático seria uma váriável global nas primeiras linhas do código, mas no seu caso com uma única moeda, uma constante global parece resolver Então em todo o código vc usa a Constante. E quando precisar mudar toda a base monetária vc teria que alterar apenas um valor: o valor dessa constante. Que se deixar na primeira linha do código fica mais fácil de achar e editar.

Public Const minhaMoeda As String = "R$"

Se no mesmo código vai usar mais de uma moeda aí teria que trabalhar com a variável global.

imagem do gravatar de mrkalvinmrkalvin ( 2019-02-18 18:31:06 +0200 )editar

@Marco Salles, vide complemento em minha resposta, conforme sugeri.....

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-02-18 21:03:26 +0200 )editar

Obrigado a Todos . Mas ao usar

oSel = ThisComponent.getCurrentSelection() ' MsgBox oSel.getString() Var1 = oSel.getString()

Particularmente por vim de uma linguagem Orientada a Objetos onde o uso de Variáveis Globais não é recomendada ( No caso do Basic do LibreOfiice ) esta Orientação parace estar longe disso , eu opto por usar o getCurrentSelection ( Acredito ter várias propriedades a ser exploradas ) .

agradeço muito a opinião de todos . Muito obrigado mesmo

imagem do gravatar de Marco SallesMarco Salles ( 2019-02-19 00:41:01 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-02-16 18:48:15 +0200

Lidas: 37 vezes

Última atualização: Feb 18