Zum Online-Excel Forum
Excel Power: * P. Haserodt * B. Schmitz * U. Küstner * R. Beckerbauer * M. Kaffl * K. Oppermann * B. Strohhäcker *
Downloads  Programmierung  Schulung  Excel Jeanie Html  TB Jeanie  Code Jeanie 
 Home   Impressum   Autoren   Feedback   Forum  Peter´s Blog  Guckst Du  Kontakt  Bücher  Links  Trans 

Siehe auch: | Binärumwandlungen | 

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

Hexadezimalumwandlungen

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

Fragen stellen im Forum: Das Forum zu Online-Excel
Nach oben