+ Reply to Thread
Results 1 to 4 of 4

Amend Upper Case macro to ignore brackets

  1. #1
    Forum Contributor Rick_Stanich's Avatar
    Join Date
    11-21-2005
    Location
    Ladson SC
    MS-Off Ver
    Office365
    Posts
    1,177

    Amend Upper Case macro to ignore brackets

    I got this macro from some NG some where (Thanks), what I need help on is making the macro ignore all characters in brackets "()".
    I am absolutely dying trying to mod this macro.
    Heck, is it even possible?

    Please Login or Register  to view this content.
    As always, I value all help provided.

    To the MOD who improved my title, Thanks!
    Last edited by Rick_Stanich; 03-10-2008 at 06:43 PM.
    Regards

    Rick
    Win10, Office 365

  2. #2
    Forum Contributor Rick_Stanich's Avatar
    Join Date
    11-21-2005
    Location
    Ladson SC
    MS-Off Ver
    Office365
    Posts
    1,177
    With code from Rick Rothstein (MVP - VB), I have this modified code.
    I have no idea how he figured this out, but damn, thats some skill.

    Please Login or Register  to view this content.

  3. #3
    Forum Contributor Rick_Stanich's Avatar
    Join Date
    11-21-2005
    Location
    Ladson SC
    MS-Off Ver
    Office365
    Posts
    1,177
    Rick Rothstein took the time to educate myself on how this was accomplished, from this I thought the information may be helpful to others.

    Here is his explanation:
    Let's show you what I did with an example. Consider this string of text...

    TextFromCell = "One two (Three Four) Five (Six) Seven"

    First off, since the Split function only works with a single delimiter, let
    convert the closing parentheses to opening parentheses, but in such a way
    that we can find them again later in order to turn them back to closing
    parentheses. To do that, I am going to replace all ')' with '()'....

    ' TextLine is Dim'med as a simple String
    TextLine = Replace(TextFromCell, ")", "()")

    At this point, TextLine contains this...

    "One two (Three Four() Five (Six() Seven"

    Now, we split this using the open parenthesis as the delimiter.

    ' ParsedLine is Dim'med as a dynamic String array
    ParsedLine = Split(TextLine, "(")

    Okay, at this point the ParsedLine array has 5 elements (index numbers 0
    through 4)

    Element 0: "One two "
    Element 1: "Three Four"
    Element 2: ") Five "
    Element 3: "Six"
    Element 4: ") Seven"

    Notice that text inside the parentheses are located at elements 1 and 3. As
    it turns out, no matter how many parentheses-grouped pieces of text you
    have, they will always occur at an odd-numbered element index... even if the
    text starts with an open parenthesis (with no text in front of it). So, to
    process only the text **not** located inside parentheses, all we have to do
    is loop through the even numbered element indexes starting with index number
    zero. The loop structure to do that is...

    For X = 0 To UBound(ParsedLine) Step 2
    '
    ' ParsedLine(X) is text not inside any parentheses, do something to
    it here
    '
    Next

    Okay, now the elements of the array look like this (assuming we are upper
    casing it)...

    Element 0: "ONE TWO "
    Element 1: "Three Four"
    Element 2: ") FIVE "
    Element 3: "Six"
    Element 4: ") SEVEN"

    Now, we rejoin the array using the Join function and specify the opening
    parenthesis (what we used to break it the original text apart with) as the
    delimiter. Once this is done, our joined text string looks like this...

    TextLine = "ONE TWO (Three Four() FIVE (Six() SEVEN"

    All that is left is to replace the '()' symbol pair with ')" and assign it
    back to the cell where it came from...

    TextFromCell = Replace(TextLine, "()", ")")

    Now we do this for every cell in the range we are processing.

    Rick
    The explanation was so intuitive I am capable of following it and my VB skills don't compare to many, certainly not Rick's.

    LOL
    I feel like I am talking about myself in the third person.

  4. #4
    Forum Contributor Rick_Stanich's Avatar
    Join Date
    11-21-2005
    Location
    Ladson SC
    MS-Off Ver
    Office365
    Posts
    1,177

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1