How to convert a simple string to Byte Array in VBA? How to convert a simple string to Byte Array in VBA? vba vba

How to convert a simple string to Byte Array in VBA?


Matthew answered how to convert to ANSI, but if you wanted the resulting byte array to still represent the original Unicode string, you'd simply assign it directly:

Public Sub Main()   Dim b() As Byte   Dim s As String   s = "Whatever"   b = s  'Assign Unicode string to bytes.'   s = b  'Works in reverse, too!'   Debug.Print sEnd Sub

That's all there is to it. You end up with a 16-element Byte array, each successive pair describing one Unicode character.


If you only need ANSI characters, you can use the StrConv() function as is done here.


' a bit of an example' had some strings down column  G' nothing in columns "F" or "H"  so that current works'  Think about it.. there are many many columns' so leave blank columns on each side of setsof dats' then currentregion works ... IFF no blank rows in the data'' problem to solve  some text  was  Fred3  John2 Blue3' others were  Bert 3  Green 2 ... which was the require format'  the ASC char 1 ..255 are the odd or even'  numbered bytes if array is 1 based or 0 based'Private Sub CommandButton1_Click()    Dim RV$, Ra As Range, Ri&, AL%, WSA() As Byte    Dim Ci%, WS$, LV As Byte    Set Ra = Range("g8").CurrentRegion    For Ri = 1 To Ra.Rows.Count        WSA = CStr(Ra(Ri, 1).value)        AL = UBound(WSA)        LV = WSA(AL - 1)  ' last char byte value        If LV > 47 And LV < 58 Then    ' 0 to 9            If WSA(AL - 3) <> 32 Then    ' no space " "                ReDim Preserve WSA(AL + 2)    ' allow 1 more char                WSA(AL - 3) = 32    ' put in space                WSA(AL - 1) = LV    ' return char                WS = WSA    ' back to a string                Ra(Ri, 1) = WS  ' back to the cell            End If        End If    Next RiEnd Sub' of course  the normal VBAcommands  Instr len Mid replace  &' would do the job ... but my brain is lazy and needed some exercise