Siehe auch: | Binärumwandlungen | 

Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Häufige Fragen

Hexadezimalumwandlungen

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --
Immer wieder mal gebraucht.
Der Code sollte selbsterklärend sein sm3 (1K)


' **************************************************************
'  Modul:  mdlHex  Typ = Allgemeines Modul
' **************************************************************

Option Explicit
 
Public Sub Test_DezimalZuHexa()
 MsgBox DezimalZuHexa(255)
End Sub
 
Public Sub Test_HexaZuDezimal()
 MsgBox HexaZuDezimal("Ff")
End Sub
 
Public Function DezimalZuHexa(ByVal DieZahl As Long) As String
 ' Peter Haserodt 2004
 Dim fHexFeld
 fHexFeld = Array("0", "1", "2", "3", "4", "5", "6", "7", _
   "8", "9", "A", "B", "C", "D", "E", "F")
 Select Case DieZahl
  Case 0 To 15
   DezimalZuHexa = DezimalZuHexa & fHexFeld(DieZahl)
  Case Else
   DezimalZuHexa = DezimalZuHexa(Fix(DieZahl / 16)) & fHexFeld(DieZahl Mod 16)
 End Select
End Function
 
Public Function HexaZuDezimal(HexaString As String) As Long
 ' Peter Haserodt 2004
 Dim i As Integer
 For i = Len(HexaString) To 1 Step -1
  HexaZuDezimal = HexaZuDezimal + (InStr(1, _
   "0123456789ABCDEF", _
   Mid(HexaString, i, 1), vbTextCompare) - 1) * 16 ^ (Len(HexaString) - i)
 Next i
End Function
Anmerkung: Größere Zahlen (Double)

Dafür muss man die Funktionen ein klein wenig ändern:
Die Deklarationen müssen von Long in Double geändert werden und der Ausdruck

& fHexFeld(DieZahl Mod 16)

muss geändert werden in:

& fHexFeld(DieZahl - Fix(DieZahl / 16) * 16)

Da mod nur Longzahlen verträgt.
Weitere Artikel der Gruppe: Häufige Fragen Aus Excel VBA
Nach oben