Blog Archive
-
▼
2004
(73)
-
▼
dezembro
(33)
- HAPPY NEW YEAR!!!!
- VBE: Exemplo de código - Receita Líquida versus Re...
- Fórmula com utilização de Array
- Formatar uma célula como fracção
- Formatar texto numa célula
- Este Blog EXCELer mencionado noutros Blogs
- Natal 2004
- VBE: Utilização da Função Transpose() com Arrays
- VBE: Apagar só Valores
- Encontrar e Apagar valores duplicados
- Excel: A Função SUM()
- Excel: Fórmula que utiliza várias Funções
- VBE: Exemplo de apresentação de um link
- Encontrar valores duplicados em células
- Excel: Shortcuts (IV)
- Excel: Shortcuts (III)
- Excel: Shortcuts (II)
- Excel: Shortcuts (I)
- Exemplo de Função definida pelo Utilizador II
- VBE: Exemplo de Função definida pelo Utilizador
- VBE: Função para conversão de numeração decimal pa...
- VBE: Limitar o comprimento de uma String
- VBE: Utilização de formulário para ver valores neg...
- VBE: Utilização da Função de Folha de Cálculo SUM()
- VBE: Decrementar programaticamente
- VBE: Utilização do método ONTIME e das Funções NOW...
- Quantos dias tem o mês (II)
- Formatação de Números (Imagem)
- VBE: Formatação de Números (Código)
- Exemplo da Função CONTAR.VAZIO()
- Fórmula com o operador aritmético de percentagem "%"
- VBE: A Função Array()
- VBE:Exemplo de macro que utiliza o indicador RANDO...
-
▼
dezembro
(33)
About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
2004-12-11
VBE: Função para conversão de numeração decimal para romana
5:18 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
A Função dhRoman(123) ou, no exemplo, dhRoman(A1) retorna CXXIII:
Código:
Public Function dhRoman(ByVal intValue As Integer) As String
' Converte um numero decimal entre 1 and 3999
' em numeração romana.
' A partir de "VBA Developer's Handbook, 2nd Edition"
' por Ken Getz and Mike Gilbert
' Copyright 2001; Sybex, Inc. All rights reserved.
' Exemplo:
' dhRoman(123) retorna "CXXIII"
Dim varDigits As Variant
Dim lngPos As Integer
Dim intDigit As Integer
Dim strTemp As String
varDigits = Array("I", "V", "X", "L", "C", "D", "M")
lngPos = LBound(varDigits)
strTemp = ""
Do While intValue > 0
intDigit = intValue Mod 10
intValue = intValue \ 10
Select Case intDigit
Case 1
strTemp = varDigits(lngPos) & strTemp
Case 2
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 3
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 4
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 1) & strTemp
Case 5
strTemp = varDigits(lngPos + 1) & strTemp
Case 6
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & strTemp
Case 7
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 8
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 9
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 2) & strTemp
End Select
lngPos = lngPos + 2
Loop
dhRoman = strTemp
End Function
Código:
Public Function dhRoman(ByVal intValue As Integer) As String
' Converte um numero decimal entre 1 and 3999
' em numeração romana.
' A partir de "VBA Developer's Handbook, 2nd Edition"
' por Ken Getz and Mike Gilbert
' Copyright 2001; Sybex, Inc. All rights reserved.
' Exemplo:
' dhRoman(123) retorna "CXXIII"
Dim varDigits As Variant
Dim lngPos As Integer
Dim intDigit As Integer
Dim strTemp As String
varDigits = Array("I", "V", "X", "L", "C", "D", "M")
lngPos = LBound(varDigits)
strTemp = ""
Do While intValue > 0
intDigit = intValue Mod 10
intValue = intValue \ 10
Select Case intDigit
Case 1
strTemp = varDigits(lngPos) & strTemp
Case 2
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 3
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 4
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 1) & strTemp
Case 5
strTemp = varDigits(lngPos + 1) & strTemp
Case 6
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & strTemp
Case 7
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 8
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 9
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 2) & strTemp
End Select
lngPos = lngPos + 2
Loop
dhRoman = strTemp
End Function