Rick,
Both methods work, but in a slightly different way:
aBytes = StrLongString
gives you a zero-based Byte array containing two bytes for each character
(character number, unicode code page number),
so Chr(aBytes(8)) gives you the 5th character (E) as in the OP's example
aBytes = StrConv(StrLongString, vbFromUnicode)
gives you a zero-based byte array containing one byte for each character
(character number in the current default code page)
so Chr(Abytes(4)) gives you the 5th character (E) as in the OP's example
I favour the 2-byte approach because its easier to recreate
strings/substrings by reassigning the Byte array to a string
strChar = aBytes
gives you back the string from the byte array
Private Sub somebytes()
Dim aBytes() As Byte
Dim StrLongString As String
Dim strChar As String
StrLongString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
aBytes = StrLongString
strChar = aBytes
MsgBox strChar
End Sub
Charles
___________________________________
The Excel Calculation Site
http://www.decisionmodels.com
"Rick Rothstein" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> This may be a duplicate posting as I can't see the first one I sent
> =====================================================================
>
> I think you need to convert this statement...
>
> aBytes = StrLongString
>
> to this...
>
> aBytes = StrConv(StrLongString, vbFromUnicode)
>
> in order to get your method to work. Also note that the Byte array that is
> produced will always be zero-based even if you have your Option Base set
> to 1, so if you want the 8th character in the text, you have to remember
> to use 7 as the index to the array.
>
> --
> Rick (MVP - Excel)
>
>
> "Charles Williams" <(E-Mail Removed)> wrote in message
> news:4b25087d$0$2526$(E-Mail Removed)...
>> If you need to access several of the individual characters in the string,
>> or handle the characters as numbers, it can be faster to use a Byte
>> array:
>>
>> Private Sub somebytes()
>>
>> Dim aBytes() As Byte
>> Dim StrLongString As String
>> Dim strChar As String
>>
>> StrLongString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
>> aBytes = StrLongString
>> strChar = Chr(aBytes(8))
>> MsgBox strChar
>>
>> End Sub
>>
>> Charles
>> ___________________________________
>> The Excel Calculation Site
>> http://www.decisionmodels.com
>>
>> "Robert Crandal" <(E-Mail Removed)> wrote in message
>> news:LrXUm.79828$(E-Mail Removed)...
>>> Do I need to use the "Mid" function each time I want
>>> to access a substring??
>>>
>>> For example, rather than using the following:
>>>
>>> mysubstring = Mids(src, 5, 1) ' get 5th character/string
>>>
>>> can't I use some other array/index notation
>>> like the following:
>>>
>>> mysubstring = src(5)
>>>
>>> I get the impression that my code would run a lot faster
>>> if I could access my substrings by an index, rather than
>>> making calls to functions such as Mids(), Instr(), etc....
>>>
>>> thank u
>>>
>>>
>>>
>>>
>>
>>
>
>