2017-10-23 1 views
0

Ich versuche, eine Spalte von Hexadezimalwerten in Binärwerte zu konvertieren und dann die Binärwerte in eine Binärdatei zu schreiben. Aber ich habe Probleme mit der Umwandlung der Hex-Werte in binären ...Konvertieren Hexadezimalzelle Wert in Binär in VBA

ich diesen Thread gefunden: Convert hex value string to Binary string

Ich habe versucht, wie die Antworten zu tun vorschlagen und jede Hex-Zeichen in binären konvertieren und Fügen Sie dann die Ergebnisse an eine Zeichenfolge an, die die vollständige Binärzahl darstellt. Aber ich bin immer Fehler, wenn ich meine Hexadezimalstring Zeichen zu konvertieren ... Hier ist, was ich zur Zeit zu tun versuche:

Dim hexString As String 
Dim binaryString As String 
hexString = "" 
binaryString = "" 
Dim rangeOfCells As Range 
Set rangeOfCells = Range ("C5: C100") 
Dim hexCell As Range 

For Each hexCell In rangeOfCells.Cells 
    If Not isEmpty(hexCell.value) Then 
     hexString = hexCell.Value 
     Dim counter As Integer 
     For counter = 1 to Len(hexString) 
      binaryString = binaryString & Convert.ToString(Convert.ToInt32(Mid(hexString, counter, 1), 16), 2) 
     Next 
    End If 
Next 

halte ich diesen Fehler auf der Linie immer die hexString Zeichen in binäre Umwandlung und Anhängen der Wert auf die binaryString:

Laufzeitfehler ‚424‘: Objekt erforderlich

habe ich versucht, die Codezeile zu vereinfachen und auch weiterhin das Fehlerereignis erhalten, wenn nur die Zusammenarbeit versuchen nver meine hexString zu einem Int (dh: Convert.ToInt32(hexString)).

Jede Hilfe zu diesem Thema wird sehr geschätzt. Vielen Dank!

+3

'Convert.ToString' ist VB.NET, nicht VBA –

Antwort

0

Entweder Verwendung HEX2BIN oder einige der anderen in this Post erwähnten Funktionen

2

Sie bekommen ein Laufzeitfehler ‚Erforderliches Objekt‘, weil Option Explicit nicht angegeben ist.

Mit Option Explicit hätten Sie einen Kompilierungsfehler erhalten, der Ihnen mitteilt, dass Convert nirgendwo deklariert ist.

Grund ist, es ist eine statische Klasse im .NET Framework, im System Namespace: es hat überhaupt nichts mit VBA zu tun.

Wenn der Wert zu konvertieren relativ klein ist, dann können Sie die HEX2BIN Tabellenfunktion verwenden:

Debug.Print Application.WorksheetFunction.Hex2Bin(myHexValue) 

Wenn die Funktion einen Fehler wirft, dann ist der Wert zu groß und Sie müssen Ihre eigenen implementieren. Diese Seite hat viele leicht zu verwendende Implementierungen.