Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Umwandlung dezimal in Alphanumerisch

Betrifft: Umwandlung dezimal in Alphanumerisch von: Jochen
Geschrieben am: 24.08.2004 07:26:44

Hallo zusammen,

ich habe folgendes Problem, ich habe eine Stapelverarbeitung von Dateien (Meßwerte) geschrieben. Bislang hatten die Dateien eine fortlaufende Nummer, doch nun ist der Zähler Alphanumerisch. Soll heißen, daß meine Dateien nicht von "0" bis "150" nummeriert sind, sondern von "0" - "9" und dann weiter von "a" - "z". Danach geht es weiter mit "10" - "19", dann "1a" - "1z" usw ...

Kann mir jemand helfen, wie ich mein Skript (s.u.) entsprechend anpassen kann?


For e = 1 To 150

If e < 10 Then Dateiname = "Testdaten" + "000" + e + ".xls"
If e >= 10 Then Dateiname = "Testdaten" + "00" + e + ".xls"
If e >= 100 Then Dateiname = "Testdaten" + "0" + e + ".xls"
If e >= 1000 Then Dateiname = "Testdaten" + e + ".xls"


Danke und Gruß

Jochen

  


Betrifft: AW: Umwandlung dezimal in Alphanumerisch von: Harald Kapp
Geschrieben am: 24.08.2004 08:18:13

Hallo Jörg,
Du machst im Prinzip eine Umwandlung aus dem Dezimalsystem in ein System auf der Basis 36 (0-9 + 26 Zeichen des Alphabets):

Sub test()
Dim basis As Integer
Dim rest As Integer
Dim x As Integer, y As Integer
Dim ergebnis As String

basis = 10 + (Asc("z") - Asc("a") + 1)
ergebnis = ""
x = InputBox(">")
y = x
Do
rest = x Mod basis
ergebnis = zeichen(rest) & ergebnis
x = x \ basis
Loop Until x = 0
Do While Len(ergebnis) < 3
ergebnis = "0" & ergebnis
Loop

MsgBox y & " -> " & ergebnis
End Sub
Private Function zeichen(x As Integer) As String
If x < 10 Then
    zeichen = Chr(Asc("0") + x)
Else
    zeichen = Chr(Asc("a") + x - 10)
End If
End Function


Gruß Harald


  


Betrifft: AW: Umwandlung dezimal in Alphanumerisch von: JRobert
Geschrieben am: 24.08.2004 11:25:54

Hallo Jochen,
noch ein paar Functionen,die auf Basis von Harald aufgebaut sind:

Public Function Decode10to36(zahlstring As String) As String
Dim Zahl As Long, tmpstr As String
Dim rest As Integer
tmpstr = ""
Zahl = CLng(zahlstring)
basis = 10 + (Asc("z") - Asc("a") + 1)
Do Until Zahl = 0
rest = Zahl Mod basis
tmpstr = zeichen(rest) + tmpstr
Zahl = (Zahl - rest) / basis
Loop
Decode10to36 = tmpstr
End Function
'----------------------------------
Public Function Decode36to10(zahlstring As String) As String
Dim lenstr As Integer
Dim Zahl As Long
lenstr = Len(zahlstring)
basis = 10 + (Asc("z") - Asc("a") + 1)
Zahl = 0
For i = 1 To lenstr
tmpchar = Mid(zahlstring, lenstr - i + 1, 1)
If Not IsNumeric(tmpchar) Then
Zahl = Zahl + CLng(10 + (Asc(tmpchar) - Asc("a"))) * basis ^ (i - 1)
Else: Zahl = Zahl + CLng(tmpchar) * basis ^ (i - 1)
End If
Next i
Decode36to10 = Str(Zahl)
End Function
Private Function zeichen(x As Integer) As String
If x < 10 Then
    zeichen = Chr(Asc("0") + x)
Else
    zeichen = Chr(Asc("a") + x - 10)
End If
End Function

'------------------------------------------

'gibt nächte Zahl in 36_Basis
Public Function GetNext36Zahl(ZahlIn36Basis As String)
Dim Zahl10 As Long
GetNext36Zahl = Decode10to36(Str(CLng(Decode36to10(ZahlIn36Basis)) + 1))
End Function

grüß Robert


 

Beiträge aus den Excel-Beispielen zum Thema "Umwandlung dezimal in Alphanumerisch"