ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7610|回复: 16

[原创]交点绘制

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-3-24 16:10 | 显示全部楼层 |阅读模式

以前曾做过一个水平与垂直线条相交的交点自动绘制工作,还一个尾巴,那就是任意斜线的交点绘制,没有能够完成。

这是以前的一个贴子链接:http://club.excelhome.net/viewthread.php?tid=59545

今天,总算完成了这个心愿!与网友们共享之!

适用于对两条相交直线的交点自动绘制工作。当然,这个程序中,没有过多涉及修饰性的格式设置,如果需要,可以参考以上链接。

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-3-24 16:02:05 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub GetIntersectPoints() Dim LineA As Variant, LineB As Variant, A1 As Single, A2 As Single, B1 As Single, B2 As Single Dim PointsArray() As Single, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single Dim X3 As Single, Y3 As Single, MyPoints As Shape, ParallelX As Byte, ParallelY As Byte On Error Resume Next '忽略错误(此处有很大作用) With Selection.ShapeRange '选定的图形对象 If .Count <> 2 Or .Type <> msoLine Then MsgBox "错误的操作!导致出错的原因可能有:" _ & vbCrLf & "1.没有选定;" & vbCrLf & "2.选定的自选图形不是直线;" _ & vbCrLf & "3.选定的线条数量超过了二条或者不足二条; " & vbCrLf & _ "4.其它.", vbOKOnly + vbExclamation, "Microsoft Word": Exit Sub Set LineA = .Item(1) '获得其中的对象之一 Set LineB = .Item(2) '获得其中的对象之二 With LineA.Nodes '对象一的几何图形 PointsArray = .Item(1).Points '顶点之一坐标,是个数组 X1 = PointsArray(1, 1) 'X轴 Y1 = PointsArray(1, 2) 'Y轴 PointsArray = .Item(2).Points '顶点之二坐标 X2 = PointsArray(1, 1) 'X轴 Y2 = PointsArray(1, 2) 'Y轴 '判断是否为水平或者垂直线条 If Y2 = Y1 Then ParallelY = ParallelY + 1: Y3 = Y1 If X1 = X2 Then ParallelX = ParallelX + 1: X3 = X1 End With '根据直线的定义Y=AX+B分别获得A1和B1值 A1 = (Y2 - Y1) / (X2 - X1) B1 = Y1 - A1 * X1 With LineB.Nodes '对象一的几何图形 PointsArray = .Item(1).Points '顶点之一坐标 X1 = PointsArray(1, 1) 'X轴 Y1 = PointsArray(1, 2) 'Y轴 PointsArray = .Item(2).Points '顶点之二坐标 X2 = PointsArray(1, 1) 'X轴 Y2 = PointsArray(1, 2) 'Y轴 If Y2 = Y1 Then ParallelY = ParallelY + 1: Y3 = Y1 If X1 = X2 Then ParallelX = ParallelX + 1: X3 = X1 End With A2 = (Y2 - Y1) / (X2 - X1) B2 = Y1 - A2 * X1 '提示 If ParallelY = 2 Then MsgBox "平行的两条水平线条,Word无法找到交点!", _ vbOKOnly + vbInformation, "Microsoft Word": Exit Sub If ParallelX = 2 Then MsgBox "平行的两条垂直线条,Word无法找到交点!", _ vbOKOnly + vbInformation, "Microsoft Word": Exit Sub '如果两线相交 , 其交点位置的X / Y坐标为共有 If X3 = 0 Then X3 = (B2 - B1) / (A1 - A2) If Y3 = 0 Then Y3 = A1 * X3 + B1 End With '定义一个圆形(交点,其半径为1.5磅) Set MyPoints = ActiveDocument.Shapes.AddShape(msoShapeOval, X3 - 1.5, Y3 - 1.5, 3, 3) With MyPoints .Line.ForeColor = wdColorBlack '线条颜色 .Fill.ForeColor = wdColorBlack '填充色 .ZOrder msoBringToFront '置于顶层 End With End Sub '---------------------- pxNiOizA.zip (14.49 KB, 下载次数: 216)

TA的精华主题

TA的得分主题

发表于 2005-3-24 16:35 | 显示全部楼层

[em02][em02][em02]

版主终于了了心愿,抢先下载学习

[em17][em17][em17]

TA的精华主题

TA的得分主题

发表于 2005-3-24 17:04 | 显示全部楼层

ye!!试了下,很好用呀!

柔大才子总是不断会有新作品面世,呵呵,向他看齐!努力学习!坚持不懈!!

TA的精华主题

TA的得分主题

发表于 2005-3-24 18:33 | 显示全部楼层

KFLj3maK.rar (40.89 KB, 下载次数: 110)

守柔兄,给你一个好东西借鉴一下。顺便给你一个“艰巨”的任务,如何使连接线和图形连接很随意,而不必一定连接在那四个或者八个点上(连接线一靠近图形就会出现绿色点)?

TA的精华主题

TA的得分主题

发表于 2005-3-24 22:01 | 显示全部楼层

试用

试用,很好。点是椭圆缩成一点。选中两直线,按下“交点绘制”,就找到交点。再组合一下即可。点有点大,可缩小点。

TA的精华主题

TA的得分主题

发表于 2005-3-25 07:00 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-3-25 16:43 | 显示全部楼层
此贴子解决了图形在屏幕中的坐标位置,对今后的进一步开发将会有很大的价值。

TA的精华主题

TA的得分主题

发表于 2005-8-26 10:26 | 显示全部楼层
为什么我一点交战绘制就出现“由于宏安全设置,无法找到宏或宏被禁用禁用”,把宏级别设为低也不行呀,请指教呀,我在WORD 中的级别是中下级,没有接触到VBA,不过正准备努力学习。

TA的精华主题

TA的得分主题

发表于 2007-1-31 17:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-2 22:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没有权限,看不到!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 12:39 , Processed in 0.053827 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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