Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Dezimal in Binär
David
Hallo zusammen,
gibt es in VBA eine Funktion analog Hex(), die eine Dezimalzahl in eine Binärzahl als String umwandelt?
Hex und Oct habe ich gefunden, aber keine Bin. Die Excelfunktionen lassen sich wohl auch nicht nutzen, da die nur per Addin funzen, oder?
Gruß
David

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Dezimal in Binär
06.07.2009 10:58:01
Kawensmann
Hallo,
so geht's:
Function dec2bin(ByVal lngZahl As Long) As String If lngZahl > 0 Then dec2bin = dec2bin(lngZahl \ 2) & IIf(lngZahl Mod 2, "1", "0") End Function


Gruß
Kawensmann

AW: Dezimal in Binär
06.07.2009 11:21:16
David
Danke, genau DAS habe ich gesucht.
Gruß
David
AW: Dezimal in Binär
06.07.2009 11:24:44
Kawensmann
Wobei Ransis Code genau das gleiche macht, aber auch für größere Zahlen als Long geeignet ist...
AW: Dezimal in Binär
06.07.2009 11:27:55
David
Für meine Zwecke ist long mehr als ausreichend.
Gruß
AW: Dezimal in Binär
06.07.2009 10:58:34
ransi
HAllo
Excel hat da was eigenes.
DezinBin() und BinInDez().
Aber irgendwie funktionieren die bei mir nicht richtig.
HAb mir was eigenes geschrieben:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************


Option Explicit


Public Function DezToBin(zahl) As String
Dim TMP As Variant
Dim L As Double
Dim s As String
TMP = CDec(zahl)
Dim P As Long
'MsgBox Log(zahl) / Log(2)
P = Log(zahl) / Log(2)
Redim B(P) As Byte
For L = P To 0 Step -1
    Select Case TMP - 2 ^ L
        Case Is < 0: B(L) = 48
        Case Is >= 0: B(L) = 49: TMP = CDec(TMP - 2 ^ L)
    End Select
Next
If B(UBound(B)) = 48 Then Redim Preserve B(UBound(B) - 1)
DezToBin = StrReverse(StrConv(B, vbUnicode))
End Function


Public Function BinToDez(BinZahl As String)
Dim B() As Byte
Dim TMP
Dim L As Long
B = StrConv(StrReverse(BinZahl), vbFromUnicode)
For L = LBound(B) To UBound(B)
    If B(L) = 49 Then TMP = CDec(TMP + 2 ^ L)
Next
BinToDez = CStr(TMP)
End Function

Aufruf ist dann so:
Tabelle1

 AB
112345678912345811100000100100010000110000011111001000110000010
2123456789123458 

Formeln der Tabelle
ZelleFormel
B1=DezToBin(A1)
A2=BinToDez(B1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
AW: Dezimal in Binär
06.07.2009 11:10:37
David
Hallo ransi,
danke, aber leider für meinen Zweck unpassend.
Ich brauche ja eben nicht das Ergebnis in Excel sondern als String innerhalb meines Codes!
Gruß
David
AW: Dezimal in Binär
06.07.2009 11:15:59
ransi
HAllo
Wo ist das Problem ?
Option Explicit

Public Sub test()
Dim Z As Long
Dim strText As String
Z = 123456789
strText = DezToBin(Z)
MsgBox strText
End Sub

Public Function DezToBin(zahl) As String
Dim TMP As Variant
Dim L As Double
Dim s As String
TMP = CDec(zahl)
Dim P As Long
'MsgBox Log(zahl) / Log(2)
P = Log(zahl) / Log(2)
Redim B(P) As Byte
For L = P To 0 Step -1
    Select Case TMP - 2 ^ L
        Case Is < 0: B(L) = 48
        Case Is >= 0: B(L) = 49: TMP = CDec(TMP - 2 ^ L)
    End Select
Next
If B(UBound(B)) = 48 Then Redim Preserve B(UBound(B) - 1)
DezToBin = StrReverse(StrConv(B, vbUnicode))
End Function

ransi
Anzeige
AW: Dezimal in Binär
06.07.2009 11:24:16
David
Ok, ich muss gestehen, als ich in deinem Beitrag auf das Ergebnis geschaut habe, was für mich unpassend war, habe ich mir deinen Lösungsansatz gar nicht weiter zu Gemüte geführt.
Ich kann leider mit meinen beschränkten VBA-Kenntnissen nicht erkennen, ob deine Lösung gegenüber der von Kawensmann etwas Anderes macht, aber seine Lösung reicht auf jeden Fall für meine zwecke vollkommen aus.
Trotzdem Dank für deine Mühe.
Gruß
David

149 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige