Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 309
Default Accessing substrings quickly

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



  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,934
Default Accessing substrings quickly

The Mid function is one of VB's fastest executing functions... you won't
find a faster way to extract a character from a string than it.

--
Rick (MVP - Excel)


"Robert Crandal" wrote in message
...
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




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 968
Default Accessing substrings quickly

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" wrote in message
...
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






  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,934
Default Accessing substrings quickly

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" wrote in message
...
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" wrote in message
...
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







  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,934
Default Accessing substrings quickly

This may be a triplicate posting as I can't see the first two I posted.
I removed your original message in case that was the problem.
================================================== =====================

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)



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 968
Default Accessing substrings quickly

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" wrote in message
...
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" wrote in message
...
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" wrote in message
...
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










Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
EXTRACTING SUBSTRINGS !! jay dean Excel Programming 11 May 8th 09 05:35 PM
Substituting substrings Constantly Amazed Excel Programming 3 May 1st 07 08:25 AM
Macro Help for Substrings [email protected] Excel Programming 4 May 17th 06 04:03 PM
sum wrt substrings! via135 Excel Worksheet Functions 6 March 26th 06 07:06 PM
STRINGS AND SUBSTRINGS ! jay dean Excel Programming 3 December 29th 04 06:22 AM


All times are GMT +1. The time now is 10:34 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"