Public StandardShapeSheetName, TargetSheetName As String Private Sub CommandButton1_Click() On Error GoTo ProcessFault Dim DescriptionLineEnd, BlankCellsCounter, i, j, k, m As Long Dim LastCellCount As Long Dim MultiProcess As Long Dim MyShape As Shape Dim MultiProcessString(2) As String Dim LastCellChar(20, 7) As Long Dim ShapeType As String TargetSheetName = "TargetSheet" StandardShapeSheetName = "ModuleSheet" For i = 1 To 20 For j = 1 To 7 LastCellChar(i, j) = 0 Next j Next i With Sheets(TargetSheetName) DescriptionLineEnd = 9 BlankCellsCounter = 0 Do Until BlankCellsCounter > 10 If .Cells(DescriptionLineEnd, 11).Value = "" Then BlankCellsCounter = BlankCellsCounter + 1 Else BlankCellsCounter = 0 End If DescriptionLineEnd = DescriptionLineEnd + 1 Loop DescriptionLineEnd = DescriptionLineEnd - 12 End With With Sheets(TargetSheetName) For i = 9 To DescriptionLineEnd ShapeType = "" MultiProcess = 1 MultiProcessString(1) = .Cells(i, 11).Value If InStr(.Cells(i, 11).Value, "/") Then MultiProcess = 2 MultiProcessString(1) = Left(.Cells(i, 11).Value, InStr(.Cells(i, 11).Value, "/") - 1) MultiProcessString(2) = Right(.Cells(i, 11).Value, Len(.Cells(i, 11).Value) - InStr(.Cells(i, 11).Value, "/")) End If For m = 1 To MultiProcess If InStr(MultiProcessString(m), "TRAN") Or InStr(MultiProcessString(m), "DRAW") Then ShapeType = "2" If InStr(MultiProcessString(m), "RECE") Or InStr(MultiProcessString(m), "STOR") Then ShapeType = "3" If InStr(MultiProcessString(m), "ACCE") Or InStr(MultiProcessString(m), "CHEC") Then ShapeType = "4" If InStr(MultiProcessString(m), "REDO") Then ShapeType = "5" If InStr(MultiProcessString(m), "ISOL") Or InStr(MultiProcessString(m), "SCRA") Then ShapeType = "6" If ShapeType <> "2" And ShapeType <> "3" And ShapeType <> "4" _ And ShapeType <> "5" And ShapeType <> "6" Then ShapeType = "1" If LastCellChar(1, 3) = Val(ShapeType) Then GoTo SkipFirstShape Select Case ShapeType Case "1" Sheets(StandardShapeSheetName).Select Sheets(StandardShapeSheetName).Range("A1:A1").Select Selection.Copy Sheets(TargetSheetName).Select Sheets(TargetSheetName).Range("C" & Trim(Str(i))).Select ActiveSheet.Paste Case "2" Sheets(StandardShapeSheetName).Select Sheets(StandardShapeSheetName).Range("B1:B1").Select Selection.Copy Sheets(TargetSheetName).Select Sheets(TargetSheetName).Range("D" & Trim(Str(i))).Select ActiveSheet.Paste Case "3" Sheets(StandardShapeSheetName).Select Sheets(StandardShapeSheetName).Range("C1:C1").Select Selection.Copy Sheets(TargetSheetName).Select Sheets(TargetSheetName).Range("E" & Trim(Str(i))).Select ActiveSheet.Paste Case "4" Sheets(StandardShapeSheetName).Select Sheets(StandardShapeSheetName).Range("D1:D1").Select Selection.Copy Sheets(TargetSheetName).Select Sheets(TargetSheetName).Range("F" & Trim(Str(i))).Select ActiveSheet.Paste 'Range("F" & Trim(Str(i))).Select 'ActiveSheet.Shapes("Text Box 6").Select 'Selection.Characters.Text = "U/R" Case "5" Sheets(StandardShapeSheetName).Select Sheets(StandardShapeSheetName).Range("E1:E1").Select Selection.Copy Sheets(TargetSheetName).Select Sheets(TargetSheetName).Range("G" & Trim(Str(i))).Select ActiveSheet.Paste Case "6" Sheets(StandardShapeSheetName).Select Sheets(StandardShapeSheetName).Range("F1:F1").Select Selection.Copy Sheets(TargetSheetName).Select Sheets(TargetSheetName).Range("H" & Trim(Str(i))).Select ActiveSheet.Paste End Select For j = 20 To 2 Step -1 For k = 1 To 7 LastCellChar(j, k) = LastCellChar(j - 1, k) Next k Next j LastCellChar(1, 1) = ActiveCell.Row LastCellChar(1, 2) = ActiveCell.Column LastCellChar(1, 3) = Val(ShapeType) LastCellChar(1, 4) = 0 For j = 1 To ActiveCell.Column - 1 LastCellChar(1, 4) = LastCellChar(1, 4) + Columns(j).ColumnWidth Next j LastCellChar(1, 5) = LastCellChar(1, 4) + Columns(ActiveCell.Row).ColumnWidth LastCellChar(1, 6) = 0 For k = 1 To ActiveCell.Row - 1 LastCellChar(1, 6) = LastCellChar(1, 6) + Rows(k).RowHeight Next k LastCellChar(1, 7) = LastCellChar(1, 6) + Rows(ActiveCell.Row).RowHeight If i = 9 Then GoTo SkipFirstShape If LastCellChar(2, 3) > 0 Or LastCellChar(3, 3) > 0 Or LastCellChar(4, 3) > 0 Then Select Case LastCellChar(1, 3) Case 1 LastCellCount = 2 Do Until LastCellChar(LastCellCount, 3) = 2 Or LastCellChar(LastCellCount, 3) = 3 LastCellCount = LastCellCount + 1 Loop Call CopySelectedShape(LastCellChar(LastCellCount, 3), LastCellChar(LastCellCount, 1)) If LastCellChar(1, 1) = LastCellChar(LastCellCount, 1) Then ActiveSheet.Shapes.AddConnector(msoConnectorElbow, _ LastCellChar(LastCellCount, 5), _ (LastCellChar(LastCellCount, 6) + LastCellChar(LastCellCount, 7)) / 2, _ LastCellChar(1, 4), _ (LastCellChar(1, 6) + LastCellChar(1, 7)) / 2).Select Else ActiveSheet.Shapes.AddConnector(msoConnectorElbow, _ LastCellChar(LastCellCount, 4), _ LastCellChar(LastCellCount, 7), _ LastCellChar(1, 4), _ LastCellChar(1, 6)).Select End If Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Flip msoFlipHorizontal Selection.ShapeRange.Flip msoFlipVertical Select Case LastCellChar(LastCellCount, 3) Case 2 Selection.ShapeRange.ConnectorFormat.BeginConnect ActiveSheet.Shapes("Oval 375"), 5 Case 3 Selection.ShapeRange.ConnectorFormat.BeginConnect ActiveSheet.Shapes("AutoShape 374"), 4 End Select Selection.ShapeRange.ConnectorFormat.EndConnect ActiveSheet.Shapes("AutoShape 1"), 1 Case 2 LastCellCount = 2 Do Until LastCellChar(LastCellCount, 3) = 1 Or LastCellChar(LastCellCount, 3) = 4 LastCellCount = LastCellCount + 1 Loop Call CopySelectedShape(LastCellChar(LastCellCount, 3), LastCellChar(LastCellCount, 1)) If LastCellChar(1, 1) = LastCellChar(LastCellCount, 1) Then ActiveSheet.Shapes.AddConnector(msoConnectorElbow, _ LastCellChar(LastCellCount, 5), _ (LastCellChar(LastCellCount, 6) + LastCellChar(LastCellCount, 7)) / 2, _ LastCellChar(1, 4), _ (LastCellChar(1, 6) + LastCellChar(1, 7)) / 2).Select Else ActiveSheet.Shapes.AddConnector(msoConnectorElbow, _ LastCellChar(LastCellCount, 4), _ LastCellChar(LastCellCount, 7), _ LastCellChar(1, 4), _ LastCellChar(1, 6)).Select End If Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Flip msoFlipHorizontal Selection.ShapeRange.Flip msoFlipVertical