römische Zahlen in arabische Zahlen umwandeln

Hallo Leute,

Ich habe ein kleines Problem und hoffe, dass ihr mir helfen könnt.
Ich muss ein Programm erstellen, das römische Zahlen in arabische Zahlen umwandelt. Ich hab das Coding, aber es gibt einige Fehler in meinem Coding. Ich darf das Coding nicht total ändern und weiß nicht wie ich die Fehler ausbessern kann. Ich hoffe ihr könnt mir schnellstmöglich helfen.

Das ist mein Coding :

Option Explicit

Function Roman2Arab(RBuchstabe As String) As Integer

Dim Roemisch As Variant, Arabisch As Variant, Arab As Integer, I As Variant
Roemisch = Array(„I“, „IV“, „V“, „IX“, „X“, „XL“, „L“, „XC“, „C“, „CD“, „D“, „CM“, „M“)
Arabisch = Array(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000)

For I = UBound(Roemisch) To LBound(Roemisch) Step -1
Do While Mid(RBuchstabe, Len(RBuchstabe)) >= Roemisch(I)
RBuchstabe = RBuchstabe - Roemisch(I)
Arab = Arab + Arabisch(I)
Loop
Next I

Roman2Arab = Arab

End Function

LG 
Hombre 16

Das „kleine Problem“ sieht mir ganz nach einer Hausaufgabe aus…
Ich will Dir mal ein paar Tipps geben:

Option Explicit
Function Roman2Arab(RBuchstabe As String) As Integer
Dim Roemisch As Variant, Arabisch As Variant, Arab As Integer, I As Variant
Roemisch = Array(„I“, „IV“, „V“, „IX“, „X“, „XL“, „L“, „XC“, „C“, „CD“, „D“, „CM“, „M“)
Arabisch = Array(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000)
For I = UBound(Roemisch) To LBound(Roemisch) Step -1

Ich gehe mal davon aus, bis hierher war es vorgegeben.

Do While Mid(RBuchstabe, Len(RBuchstabe)) >= Roemisch(I)

Der Ausdruck „Mid(RBuchstabe, Len(RBuchstabe))“ liefert immer das LETZTE Zeichen der Variable RBuchstabe. Dieses Zeichen mit „größergleich“ mit dem Array-Inhalt zu vergleichen macht hier eigentlich keinen Sinn, weil wenn die Zeichenkettenlänge gleich lang ist, wird der ASCII-Wert des Zeichens für den Vergleich verwendet.
Was Du machen musst: Abhängig von der Länge der Zeichenkette Roemisch(i) musst Du die ersten beiden oder nur das erste Zeichen der Zeichenkette RBuchstabe mit Roemisch(i) vergleichen.

RBuchstabe = RBuchstabe - Roemisch(I)

Das funktioniert überhaupt nicht. Man kann zwar Zeichenketten (Strings) aneinanderketten (z.B. „Haus“ + „mann“ gibt „Hausmann“) aber nicht voneinander abziehen! Da kommt auf jeden Fall eine Fehlermeldung.
Was Du machen musst: Die Zeichenkette RBuchstabe muss verkürzt werden, wenn im vorherigen Vergleich die Zeichenkette Roemisch(i) gefunden wurde. Dann macht auch die folgende Zeile Sinn:

Arab = Arab + Arabisch(i)

Vielleicht hilft Dir das weiter!
Viel Erfolg und viele Grüße
Dieter