I have a text string, in multiple cells within a column, that I want to separate, with a maximum of 50 numbers characters per line, but the separation should only take place at a space between words.
As an example, let's say the text string is this...

blue red pink floor ground purple tied office hamburger cheese book work today tomorrow yesterday

and I want to separate it to cells to the right with no more than 50 characters in any single cell. This is how the text should look using "|" to represent the next cell (or possible where a delimiter could be placed)...


blue red pink floor ground purple tied office|hamburger cheese book work today tomorrow|yesterday


What i have is not working correctly and locking up excel. Please Help!!

Example:
Code:
Option Explicit
  
Sub termsSplit()
Dim rngData     As Range
Dim Cell        As Range
Dim arrInput()  As String
Dim arrOutput() As String
Dim strValue    As String
Dim strTmp      As String
Dim n           As Long
Dim i           As Long
Dim bContinue   As Boolean
  
  '// However you set your range//
  Set rngData = Selection '<--- using the CodeName (better IMO), or, using the sheet's
                                   '(tab) name---> ThisWorkbook.Worksheets("Sheet2").Range("A1")
  
  For Each Cell In rngData.Cells
    
    strValue = Cell.Value
    
    If Len(strValue) > 50 Then
      
      '// Split the words into an array, using the space as the delimeter.              //
      arrInput() = Split(strValue, " ")
      '// Just clarity  //
      n = 0: i = 0
      
      '// Outside loop  //
      Do While n <= UBound(arrInput)
        
        '// Empty the string and set the flag//
        strTmp = vbNullString
        bContinue = True
        
        '// Test must pass both //
        Do While n <= UBound(arrInput, 1) And bContinue
          '// If projected temp string length will be below 51... //
          If Len(strTmp) + 1 + Len(arrInput(n)) <= 51 Then
            '// ...add a space and the next word. //
            strTmp = strTmp & Chr$(32) & arrInput(n)
            n = n + 1
          Else
            '// ...else flip the flag.  //
            bContinue = False
          End If
        Loop
        
        '// Add an element to our output array and tack our built string into it. //
        i = i + 1
        ReDim Preserve arrOutput(1 To i)
        arrOutput(i) = Trim$(strTmp)
        
      Loop
      
      '// Plunk the results into a sized range //
      Cell.Offset(, 1).Resize(, UBound(arrOutput, 1)).Value = arrOutput
    
    Else
      Cell.Offset(, 1).Value = Cell.Value
    End If
    
  Next
  
End Sub