Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4958|回复: 18

[已解决]VBA代码自动连线的修改(补上了附件)

[复制链接]
发表于 2011-8-8 18:18 | 显示全部楼层 |阅读模式
本帖最后由 夏之恋之夏 于 2011-8-8 19:15 编辑

画线0305.rar (15.8 KB, 下载次数: 62)
发表于 2011-8-8 18:58 | 显示全部楼层
在哪下载的,给个链接,或你上传文件
回复

使用道具 举报

 楼主| 发表于 2011-8-8 20:40 | 显示全部楼层
回复

使用道具 举报

发表于 2011-8-8 21:01 | 显示全部楼层
Dim Myr%(1 To 11), nn%  11改成16
For x = 2 To 12   '12改成17
回复

使用道具 举报

 楼主| 发表于 2011-8-9 20:07 | 显示全部楼层
兰色幻想 发表于 2011-8-8 21:01
Dim Myr%(1 To 11), nn%  11改成16
For x = 2 To 12   '12改成17

改完之后画出的线不是对应数字了,有错误,能修改下附件吗?
回复

使用道具 举报

 楼主| 发表于 2011-8-9 21:37 | 显示全部楼层
1.rar (18.45 KB, 下载次数: 14)
回复

使用道具 举报

发表于 2011-8-9 22:16 | 显示全部楼层
第一个问题,填充是由条件格式的条件决定的,不符合条件肯定不会设置兰底。
Sub huax0304()
'画线
Dim n%, x%, x1, y1, x2, y2
Dim Myr%(1 To 16), nn%
For x = 2 To 17
    Myr(x - 1) = Cells(65536, x).End(xlUp).Row
Next x
nn = Application.Max(Myr)
n = 1
For x = 4 To nn
        aa = Cells(x, 1)
            If n > 1 Then
                x2 = Cells(x, 1).Offset(0, aa + 2).Left - Cells(x, 1).Offset(0, aa + 2).Width / 2: y2 = Cells(x, 1).Offset(0, aa + 2).Top + Cells(x, 1).Offset(0, aa + 2).Height / 2
                ActiveSheet.Shapes.AddLine(x1, y1, x2, y2).Select
                Selection.ShapeRange.Line.Weight = 1.5
                Selection.ShapeRange.Line.ForeColor.SchemeColor = 6    '粉红色
                x1 = x2: y1 = y2
                'n = 1
                GoTo 100
            Else
                x1 = Cells(x, 1).Offset(0, aa + 2).Left: y1 = Cells(x, 1).Offset(0, aa + 2).Top
                n = n + 1
            End If
100:
Next x
End Sub
Sub test()
'删除所有的线
For Each shp In ActiveSheet.Shapes
'MsgBox shp.Name
    If InStr(shp.Name, "Line") > 0 Then
     shp.Delete
    End If
Next
End Sub
回复

使用道具 举报

 楼主| 发表于 2011-8-11 18:02 | 显示全部楼层
11.jpg 11.rar (18.75 KB, 下载次数: 40)
回复

使用道具 举报

发表于 2011-8-11 18:34 | 显示全部楼层    本楼为最佳答案   
晕,看了半天,才发现是S列太宽的原因,每一列都是根据它后面一列的列宽推算出来的,你要求是中线,S一列除以2的列宽也是很宽的,所以会出现,两种解决办法
第一种把S列宽调整成和前面一样的列宽,
第二种改一下代码:
x2 = Cells(x, 1).Offset(0, aa + 2).Left - Cells(x, 1).Offset(0, aa + 2).Width / 2
改成
x2 = Cells(x, 1).Offset(0, aa + 2).Left - Cells(x, 1).Offset(0, aa +1).Width / 2
回复

使用道具 举报

 楼主| 发表于 2011-8-11 19:05 | 显示全部楼层
非常感谢!谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-23 18:16 , Processed in 0.336306 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表