Autor: Peter Haserodt --- Aus Excel VBA - Gruppe:
Häufige FragenHexadezimalumwandlungen
Autor: Peter Haserodt - Erstellt: -- - Letzte Revision: --
Immer wieder mal gebraucht.
Der Code sollte selbsterklärend sein
' **************************************************************
' 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