@@ -1596,58 +1596,53 @@ Public Function SplitField(aIndex As Long, CharToSplitWith As String, _
15961596 Dim FldDiff As Long
15971597
15981598 On Error GoTo ErrHandler_SplitField
1599- ColUB = UBound(Buffer(0 ))
1600- Select Case aIndex
1601- Case 0 To ColUB
1602- If Not RowSplit Then
1603- For rCounter = 0 To CurrentIndex
1604- curRecord() = Buffer(rCounter)
1605- cpRecord() = Split(curRecord(aIndex), CharToSplitWith)
1606- FldDiff = UBound(cpRecord) - LBound(cpRecord)
1607- ReDim tmpRecord(0 To ColUB + FldDiff)
1608- For sfldIndex = 0 To aIndex - 1
1609- tmpRecord(sfldIndex) = curRecord(sfldIndex)
1610- Next sfldIndex
1611- For sfldCPindex = LBound(cpRecord) To UBound(cpRecord)
1612- tmpRecord(sfldIndex) = cpRecord(sfldCPindex)
1613- sfldIndex = sfldIndex + 1
1614- Next sfldCPindex
1615- For sfldIndex = aIndex + FldDiff + 1 To UBound(curRecord) + FldDiff
1616- tmpRecord(sfldIndex) = curRecord(sfldIndex - FldDiff)
1617- Next sfldIndex
1618- Buffer(rCounter) = tmpRecord
1619- Next rCounter
1620- Else
1621- rowDiff = 1
1622- For rCounter = 0 To CurrentIndex
1623- rowDiff = rowDiff - 1
1624- curRecord() = Buffer(rCounter + rowDiff)
1625- cpRecord() = Split(curRecord(aIndex), CharToSplitWith)
1626- lRowIdx = 0
1627- For sfldIndex = LBound(cpRecord) To UBound(cpRecord)
1628- lRowIdx = lRowIdx + 1
1629- rowDiff = rowDiff + 1
1630- If lRowIdx = 1 Then
1631- curRecord(aIndex) = cpRecord(sfldIndex)
1632- Buffer(rCounter + rowDiff - 1 ) = curRecord
1633- Else
1634- ReDim tmpRecord(0 To ColUB)
1635- tmpRecord(aIndex) = cpRecord(sfldIndex)
1636- Me.Insert rCounter + rowDiff - 1 , tmpRecord
1637- End If
1638- Next sfldIndex
1639- Next rCounter
1599+ If Not RowSplit Then
1600+ For rCounter = 0 To CurrentIndex
1601+ curRecord() = Buffer(rCounter)
1602+ ColUB = UBound(curRecord)
1603+ If aIndex > 0 And aIndex <= ColUB Then
1604+ cpRecord() = Split(curRecord(aIndex), CharToSplitWith)
1605+ FldDiff = UBound(cpRecord) - LBound(cpRecord)
1606+ ReDim tmpRecord(0 To ColUB + FldDiff)
1607+ For sfldIndex = 0 To aIndex - 1
1608+ tmpRecord(sfldIndex) = curRecord(sfldIndex)
1609+ Next sfldIndex
1610+ For sfldCPindex = LBound(cpRecord) To UBound(cpRecord)
1611+ tmpRecord(sfldIndex) = cpRecord(sfldCPindex)
1612+ sfldIndex = sfldIndex + 1
1613+ Next sfldCPindex
1614+ For sfldIndex = aIndex + FldDiff + 1 To UBound(curRecord) + FldDiff
1615+ tmpRecord(sfldIndex) = curRecord(sfldIndex - FldDiff)
1616+ Next sfldIndex
1617+ Buffer(rCounter) = tmpRecord
16401618 End If
1641- Case Else
1642- GoTo OutOfBounds_SplitField
1643- End Select
1619+ Next rCounter
1620+ Else
1621+ rowDiff = 1
1622+ For rCounter = 0 To CurrentIndex
1623+ rowDiff = rowDiff - 1
1624+ curRecord() = Buffer(rCounter + rowDiff)
1625+ ColUB = UBound(curRecord)
1626+ If aIndex > 0 And aIndex <= ColUB Then
1627+ cpRecord() = Split(curRecord(aIndex), CharToSplitWith)
1628+ lRowIdx = 0
1629+ For sfldIndex = LBound(cpRecord) To UBound(cpRecord)
1630+ lRowIdx = lRowIdx + 1
1631+ rowDiff = rowDiff + 1
1632+ If lRowIdx = 1 Then
1633+ curRecord(aIndex) = cpRecord(sfldIndex)
1634+ Buffer(rCounter + rowDiff - 1 ) = curRecord
1635+ Else
1636+ ReDim tmpRecord(0 To ColUB)
1637+ tmpRecord(aIndex) = cpRecord(sfldIndex)
1638+ Me.Insert rCounter + rowDiff - 1 , tmpRecord
1639+ End If
1640+ Next sfldIndex
1641+ End If
1642+ Next rCounter
1643+ End If
16441644 Set SplitField = Me
16451645ErrHandler_SplitField:
1646- Exit Function
1647- OutOfBounds_SplitField:
1648- Set SplitField = Nothing
1649- err.Raise 9
1650- Resume ErrHandler_SplitField
16511646End Function
16521647
16531648Private Function SplitFieldsOrderStr (fieldsString As String ) As String ()
0 commit comments