Retrieving Lists of Strings in Statistica Visual Basic

The subroutine GetDelimitedString can be used to retrieve substrings from a string which is sectioned off by delimited characters. Simply enter the string which contains the concatenated strings as the first parameter, the section number you wish to retrieve, the target string you wish to store the retrieved string into, and the character that is being used as the delimiter; if the fourth parameter is left blank then the pipe ("|") symbol will be used as the delimiter. Simply copy and paste the following into your macro to utilize GetDelimitedString:

Sub GetDelimitedString _

(Source As String,Section As Integer, _
ByRef
Target As String, _

Optional
Character As String = "|")

Dim
Index As Integer

Dim
Length As Integer

Dim
TrimSize As Integer

Dim
SectionValidate As Integer

Dim
StringValidate As String


'section must be greater than zero

If
Section < 1 Then

MsgBox "Section must be greater than zero."
Exit Sub

End If

'section cannot be greater than the number of sections 'in the source string

Index = 1

StringValidate = Source

While
Index > 0 'just use this to start the loop

Length = Len(StringValidate)
'search for a "|" in the string

Index = InStr(1,StringValidate,Character)

TrimSize = Length - Index

'slice off the "|" and everything in front of it

StringValidate = Right(StringValidate,TrimSize)

'keep track of the number of sections

'separated by a "|"

SectionValidate = SectionValidate + 1

Wend

If
Section > SectionValidate Then

Dim ErrorMsg As String
ErrorMsg = "There are only " & _

SectionValidate & " sections in this string."

Call
MsgBox(ErrorMsg,vbExclamation,"Invalid Section")

Exit Sub

End If

'trim the string to the section specified

For
i = 1 To (Section - 1)

Length = Len(Source)
'search for a "|" in the string

Index = InStr(1,Source,Character)

TrimSize = Length - Index

'slice off the "|" and everything in front of it

Source = Right(Source,TrimSize)

Next i
'if there any "|" characters left then

'trim off everything after the first one to the left

Index = InStr(1,Source,Character)

If
Index Then

Source = Left(Source,(Index -1))

End If
'write over the target string with

'the desire string section

Target = Source

End Sub