[AccessD] A2003 - Build a List/Array from Tokens in a blurb

Stuart McLachlan stuart at lexacorp.com.pg
Tue Sep 1 20:57:11 CDT 2015


That's because SplitTokens and Tokens are arrays, not strings.

Try this as your debugging code:

...

DIm l as long
For l = lbound(Tokens()) to Ubound(Tokens())
Debug.Print Tokens(l)
Next
...

On 2 Sep 2015 at 11:41, Darren - Active Billing wrote:

> Hi Gustav,
> So sorry for the delay in getting back to this.
> because I have limited skills in VBA - I´m not sure I know how to
> implement your cool functions. If I add a MsgBox or Debug.print
> statement I get a "Compile Error: Type Mismatch" error message after
> the button click. This happens if I add the MsgBox or Debug.Print
> lines to the very last lines in your cool function.
> 
> EG.
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Public Function SplitTokens(ByVal Message As String) As String()
> 
> ......your cool Function here.....
> 
>    SplitTokens = Tokens
> 
>     'Debug.Print SplitTokens
>     `Debug.print Tokens
>     'Msgbox SplitTokens
>     'Msgbox Tokens
> 
> End Function
> ~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> not sure what I´m doing wrong.
> Apologies and Many thanks in advance
> 
> D
> 
> > On 21 Aug 2015, at 6:52 pm, Gustav Brock <gustav at cactus.dk> wrote:
> > 
> > Hi Darren
> > 
> > Split is your friend:
> > 
> > <code>
> > Public Function SplitTokens(ByVal Message As String) As String()
> > 
> >    Dim Parts       As Variant
> >    Dim Tokens()    As String
> >    Dim Token       As Integer
> > 
> >    ' Split into first parts.
> >    Parts = Split(Message, "[")
> > 
> >    If UBound(Parts) <= 0 Then
> >        ' Return array with LBound = 0.
> >        ReDim Tokens(0)
> >    Else
> >        ' Return array with LBound = 1.
> >        ' Clean parts and fill array.
> >        ReDim Tokens(1 To UBound(Parts))
> >        For Token = 1 + LBound(Parts) To UBound(Parts)
> >            Tokens(Token) = "[" & Split(Parts(Token), "]", 2)(0) &
> >            "]"
> >        Next
> > 
> >        ' Split into second parts.
> >        Parts = Split(Message, "{")
> > 
> >        If UBound(Parts) > 0 Then
> >            ' Clean parts and append to array.
> >            ReDim Preserve Tokens(1 To UBound(Tokens) +
> >            UBound(Parts)) For Token = 1 + LBound(Parts) To
> >            UBound(Parts)
> >                Tokens(UBound(Tokens) - 1 + Token) = "{" &
> >                Split(Parts(Token), "}", 2)(0) & "}"
> >            Next
> >        End If
> >        ' Return array with LBound = 1.
> >    End If
> > 
> >    SplitTokens = Tokens
> > 
> > End Function
> > </code>
> > 
> > /gustav
> > 
> > -----Oprindelig meddelelse-----
> > Fra: AccessD [mailto:accessd-bounces at databaseadvisors.com] På vegne
> > af Darren - Active Billing Sendt: 21. august 2015 02:35 Til: Access
> > Developers discussion and problem solving
> > <accessd at databaseadvisors.com> Emne: [AccessD] A2003 - Build a
> > List/Array from Tokens in a blurb
> > 
> > Hi Team
> > 
> > if I had a field with the following blurb...
> > 
> > Dear [FirstName],
> > Today is [NameOfDay] and the date is the [DateOfMonth] of
> > [NameOfMonth]. Kind Regards, {SignatoryName}
> > 
> > I can see in that blurb there are 5 tokens surrounded by Square and
> > or Curley brackets. How could I run though that text and build a
> > list of the 5 tokens such that I can produce a list/array like...
> > 
> > [FirstName]
> > [NameOfDay] 
> > [DateOfMonth]
> > [NameOfMonth]
> > {SignatoryName}
> > 
> > Many thanks in advance.
> > 
> > Darren
> > 
> > -- 
> > AccessD mailing list
> > AccessD at databaseadvisors.com
> > http://databaseadvisors.com/mailman/listinfo/accessd
> > Website: http://www.databaseadvisors.com
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 





More information about the AccessD mailing list