|
目前这个代码只能实现第一组aw:bd列数据的自动划线命令,
有没有大神帮忙把这个代码调整下,我想一次性把剩下的
be:bl列,bm:bt列,bu:cb列,cc:cj列,ck:crv列,cs:cz列,da:dh列,
这七组数据同时进行自动划线。谢谢
Sub Alianxian1() '折线
Dim shp As Shape ''排除图标按钮
For Each shp In Sheet3.Shapes
If shp.Type <> 8 And shp.Type <> 12 Then shp.Delete
Next
Dim x1, y1, x2, y2
Dim i As Integer
Dim rng1 As Range, rng2 As Range
For i = 7 To Sheet3.Range("aw5").End(xlDown).Row '表头行+2和表头行位置
For Each rng1 In Sheet3.Range("aw" & i - 1 & ":bd" & i - 1) '表头行开始和结束位置
If rng1 <> "" Then Exit For
Next rng1
For Each rng2 In Sheet3.Range("aw" & i & ":bd" & i) '表头行开始和结束位置
If rng2 <> "" Then Exit For
Next rng2
x1 = rng1.Left + rng1.Width / 2
y1 = rng1.Top + rng1.Height / 2
x2 = rng2.Left + rng2.Width / 2
y2 = rng2.Top + rng2.Height / 2
Sheet3.Shapes.AddLine x1, y1, x2, y2
Next i
End Sub
- Sub addLineTo(arrRange As Range)
- Dim r As Range, fore As Range, back As Range
- Set fore = Nothing
- For Each r In arrRange
- If Not fore Is Nothing And Len(r.Text) > 0 Then
- Set back = r
- x1 = fore.Left + fore.Width / 2
- y1 = fore.Top + fore.Height / 2
- x2 = back.Left + back.Width / 2
- y2 = back.Top + back.Height / 2
- Sheet3.Shapes.AddLine x1, y1, x2, y2
- End If
- If Len(r.Text) > 0 Then
- Set fore = r
- End If
- Next
- End Sub
- Sub main()
- Dim shp As Shape ''排除图标按钮
- For Each shp In Sheet3.Shapes
- If shp.Type <> 8 And shp.Type <> 12 Then shp.Delete
- Next
- Dim rng As Range
- For i = 1 To Range("AW5:DH5").Columns.Count Step 8
- Set rng = Range("AW5:DH5")(i)
- addLineTo rng.Offset(1, 0).Resize(rng.End(xlDown).Row - rng.Row, 8)
- Next
- End Sub
复制代码
|
|