把代码放在Sheet1的Worksheet_Change事件里面 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Err_Handler If Target.Count = 1 And Target.Column = 2 And Target.Offset(-1, 0) <> "" Then Dim rng As Range Set rng = Shapes(Shapes.Count).TopLeftCell If Target.Address = Cells(rng.Row + 1, 2).Address Then Dim BeginX, Beginy, EndX, EndY Select Case Target.Offset(-1, 0) Case 7, 8, 9 '曲线往左下走一格 BeginX = Shapes(Shapes.Count).Left Case 3, 4, 5, 6 '曲线往垂直下方走一格 BeginX = Shapes(Shapes.Count).Left Case 0, 1, 2 '曲线往右下走一格 BeginX = Shapes(Shapes.Count).Left + rng.Width End Select Select Case Target Case 7, 8, 9 '曲线往左下走一 EndX = rng.Offset(0, -1).Left Case 3, 4, 5, 6 '曲线往垂直下方走一格 EndX = rng.Left Case 0, 1, 2 '曲线往右下走一格 EndX = rng.Offset(0, 1).Left End Select Beginy = Shapes(Shapes.Count).Top + rng.Height EndY = rng.Offset(2, 0).Top With Me.Shapes.AddLine(BeginX, Beginy, EndX, EndY).Line .Weight = 1.5 .ForeColor.SchemeColor = 39 End With End If End If Err_Handler: Exit Sub End Sub |