Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
[Resolvido] Alterar Formato Moeda VBA - Excel
08-08-2014, 17:28 (Esta mensagem foi modificada pela última vez a: 23-08-2014 21:00 por nioxys.)
Mensagem: #1
[Resolvido] Alterar Formato Moeda VBA - Excel
Olá Smile

Tenho um ficheiro Excel que é usado para fazer orçamentos e uma vez que os orçamentos podem ser feitos em vários tipos de moeda, Euro, Dólar, etc eu estou a tentar arranjar uma forma de alterar o formato das células que estão formatadas como moeda através de uma combobox. Ou seja, o utilizador selecciona na combobox a moeda a utilizar naquele orçamento e as células formatadas como moeda assumem essa "moeda", por exemplo, se o utilizador escolher dólar a célula passa a apresentar os valores 100,00 USD ou $100,00 (depende como eu colocar o formato).

Já consegui fazer isto no entanto funciona apenas para intervalos finitos, ou seja, A1:A100 por exemplo. Mas eu não sei se os itens de um orçamento vão terminar na linha 100 ou se num qualquer caso vou ter 500 linhas. Para além disso eu tenho várias colunas com diversas células formatadas como moeda. O que estou a tentar fazer é tornar o meu código dinâmico.

Neste momento tenho o seguinte,

Eu leio o formato inicial através de uma combobox, por exemplo, se a combobox estiver como EUR isso significa que as células estão formatadas naquele momento como EUR, então eu uso o evento DropButtonclick() para obter o estado inicial e passo esse valor para uma variável global chamada oldformat.

Código:
Private Sub ComboBox1_DropButtonclick()
inicial = Me.ComboBox1.Value
Select Case inicial
Case "EUR"
oldformat = "# ##0,00 €"
Case "GBP"
oldformat = "£#,##0.00"
Case "USD"
oldformat = "# ##0.00\ [$USD]"
End Select
End Sub

A variável oldformat é declarada,

Código:
Public oldformat As String

Depois disto eu uso o evento change da combobox para ler o novo valor, e coloco-o na variável newformat.

Código:
Private Sub ComboBox1_Change()

Dim ws As Worksheet
Dim newFormat As String

newValue = Me.ComboBox1.Value
Select Case newValue
Case "EUR"
newFormat = "# ##0,00 €"
Case "GBP"
newFormat = "£#,##0.00"
Case "USD"
newFormat = "# ##0.00\ [$USD]"
End Select

For Each ws In ActiveWorkbook.Worksheets

        Application.FindFormat.NumberFormat = oldformat
        Application.ReplaceFormat.NumberFormat = newFormat
        ws.Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
Next ws
End Sub

E ao mesmo tempo tento fazer um find/replace pelo livro do excel de forma a substituir o formato inicial pelo novo e aqui está o problema.
Não estou a conseguir atribuir o valor das variáveis oldformat e newformat à propriedade Numberformat

Obtenho o erro Run-time error '1004': Application-defined or object-defined error nas linhas

Código:
Application.FindFormat.NumberFormat = oldformat
Application.ReplaceFormat.NumberFormat = newFormat

Já tentei,

Código:
Application.FindFormat.NumberFormat = "oldformat"
Application.ReplaceFormat.NumberFormat = "newFormat"

Também não funciona.

Conhecem alguma forma de atribuir o valor destas variáveis à propriedade NumberFormat?
Ou alguém tem ideia de como fazer isto, outro método, outra abordagem, etc, estou receptivo a novas ideias.

Obrigado.

“A neutron walks into a bar and asks how much for a drink. The bartender replies, ‘For you, no charge.’” - Sheldon Cooper
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Mensagem neste Tópico
[Resolvido] Alterar Formato Moeda VBA - Excel - nioxys - 08-08-2014 17:28

Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)