rt1970 10 Geschrieben 4. März 2011 Melden Teilen Geschrieben 4. März 2011 Hallo! Habe in Excel ein Modul erzeugt. Leider hat es ab 2.100.000.000 ein Problem beim rechnen, da ich long verwendet habe. Dimensioniere ich die Adresse nun als Single, bekomme ich #WERT! Ziel soll sein: IP-Liste im Long-Format wieder als normale IP darstellen. Wie kann ich nun rechnen? Option Explicit Public Function long2ip(ByVal Adresse As Single) As String Dim stelle1 Dim stelle2 Dim stelle3 Dim stelle4 stelle1 = Int(Adresse / 16777216) stelle2 = Adresse Mod 16777216 stelle2 = Int(stelle2 / 65536) stelle3 = Adresse Mod 16777216 stelle3 = stelle3 Mod 65536 stelle3 = Int(stelle3 / 256) stelle4 = Adresse Mod 16777216 stelle4 = stelle4 Mod 65536 stelle4 = Int(stelle4 Mod 256) long2ip = Str(stelle1) + "." + Str(stelle2) + "." + Str(stelle3) + "." + Str(stelle4) 'GANZZAHL(Adresse / 256 ^ 3) 'GANZZAHL(REST(Adresse; (256 ^ 3)) / (256 ^ 2)) 'GANZZAHL(REST(REST(Adresse; 256 ^ 3); 256 ^ 2) / 256) 'GANZZAHL(REST(REST(REST(Adresse; 256 ^ 3); 256 ^ 2); 256)) End Function Zitieren Link zu diesem Kommentar
Sigma 10 Geschrieben 4. März 2011 Melden Teilen Geschrieben 4. März 2011 Hallo, nimm statt Single den Typ Double. Das macht die Umwandlung leichter, da die Exponentialdarstellung hier später einsetzt. Simples Beispiel Sub test() Dim text As String Dim zahl As Double zahl = 245253128101# text = Left(zahl, 3) + "." + Mid(zahl, 4, 3) + "." + Mid(zahl, 7, 3) + "." + Mid(zahl, 10, 3) MsgBox (text) End Sub Grüße, Sigma Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.