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.
' 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