Home |
Search |
Today's Posts |
#15
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Yes, it works now.
Interesting and neat, but about twice as slow as with Mid or a Byte array. Setting a reference to RegExp makes it a bit faster, but not much. Thanks in any case for the tip. RBS "Dana DeLouis" wrote in message ... It leaves out spaces though and I can't turn in into a function. Thanks for the feedback. This may not be the best approach, as I'm not sure what the op had in mind as a function. We can make a small change to include spaces as below. Here are a couple of general ideas. Both test examples print the first and last character. However, in the second example, the line "Set RE =" is skipped, thus saving a little setup time. Other speed-ups would be to set a vba library reference, and avoid the CreateObject line. Again, just some general ideas. Option Explicit Public RE As Object Function RE_Split(s As String) As Variant If RE Is Nothing Then Set RE = CreateObject("VBScript.RegExp") RE.Global = True '// Any word character or white space character RE.Pattern = "\w|\s" End If If RE.Test(s) Then Set RE_Split = RE.Execute(s) End If End Function Sub TestIt() Dim v As Variant Set v = RE_Split("12 ab") Debug.Print v(0) Debug.Print v(4) Set v = RE_Split("ab xyz") Debug.Print v(0) Debug.Print v(v.Count - 1) End Sub -- HTH :) Dana DeLouis Windows XP & Office 2003 "RB Smissaert" wrote in message ... That's an interesting one. It leaves out spaces though and I can't turn in into a function. RBS "Dana DeLouis" wrote in message ... ...zero-based one dimensional array? Just to mention another option. A Regular Expression is zero based also. Sub Demo() Dim RE As Object Dim M As Variant Dim s As String Dim J As Long Set RE = CreateObject("VBScript.RegExp") s = "abcdef" RE.Global = True RE.Pattern = "\w" Set M = RE.Execute(s) '// Zero based... For J = 0 To M.Count - 1 Debug.Print M(J) Next J End Sub -- HTH :) Dana DeLouis Windows XP & Office 2003 "Gary''s Student" wrote in message ... Does VBA supply a builtin function like SPLIT() that returns an array containing the individual characters in a string, or would one have to be coded? -- Gary's Student |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Similar nos. | New Users to Excel | |||
I need something similar to an IF formula | Excel Worksheet Functions | |||
How do I remove split a split window? | New Users to Excel | |||
Similar to Vlookup | Excel Discussion (Misc queries) | |||
Need help similar to a histogram | Excel Programming |