# Hexadezimal zu Dezimal



## KhalilAhmad (14. März 2007)

Hallo Jungs,

hab mal was gebastelt gerade um Hexadezimalzahlen zu Dezimalzahlen zu machen, schreib da morgen ne Klausur drüber. Leider ist irgendwo ein Fehler drin, wenn einer mal gucken könnte, wäre nett. Besten Dank. 

Public Sub Hexadezimalsystem()

'Deklaration der Variablen
Dim HEXADEZIMALZAHL, STELLENWERT As Integer
Dim DEZIMALZAHL, ZAEHLER, NENNWERT, ANZAHL_STELLEN As Byte
Dim A, B, C, D, E, F As Byte

'Entnahme der Werte
HEXADEZIMALZAHL = [E10]

'Ermittlung der Stellen
ANZAHL_STELLEN = Len([A10])

'Schleife
For ZAEHLER = ANZAHL_STELLEN - 1 To 0 Step -1

'Nennwert
NENNWERT = Mid(HEXADEZIMALZAHL, (ANZAHL_STELLEN - ZAEHLER), 1)

'Berechnung des Stellenwertes
STELLENWERT = 16 ^ ZAEHLER

'Berechnung der Hexadezimalzahl
HEXADEZIMALZAHL = HEXADEZIMALZAHL + STELLENWERT * NENNWERT

Next ZAEHLER

'Ausgabe
[E10] = HEXADEZIMALZAHL
End Sub


----------



## DrSoong (14. März 2007)

Machts dir was aus, dass ich das ganze etwas umgeschrieben und vereinfacht habe?


```
Public Sub Hexadezimalsystem()

'Deklaration der Variablen
Dim sHex As String, sCode As String, iStellen As Integer, iZaehler As Integer
Dim iNennwert As Integer, lDezimal As Long, lStellenwert As Long

'Hexwerte:
sCode = "0123456789ABCDEF"

'Entnahme der Werte
sHex = UCase(Text1.Text)

'Ermittlung der Stellen
iStellen = Len(sHex)

'Schleife
For iZaehler = 1 To iStellen

'Nennwert
iNennwert = InStr(sCode, Mid(sHex, iStellen - iZaehler + 1, 1)) - 1

'Berechnung des Stellenwertes
lStellenwert = 16 ^ (iZaehler - 1)

'Berechnung der Hexadezimalzahl
lDezimal = lDezimal + lStellenwert * iNennwert

Next iZaehler

'Ausgabe
MsgBox lDezimal

'Noch einfacher?
'Hat leider zwischen 32768 - 65565 das Problem, dass negativ gerechnet wird.
MsgBox Val("&H" & sHex)

End Sub
```


Der Doc!


----------

