ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 守柔

[原创]交点绘制

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-29 15:00 | 显示全部楼层
看不太懂,要好好学习~~~~~

TA的精华主题

TA的得分主题

发表于 2012-10-31 18:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
怎么用啊  菜鸟

TA的精华主题

TA的得分主题

发表于 2013-9-17 19:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-9-18 17:36 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-5-13 16:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 banjinjiu 于 2014-5-13 17:20 编辑

1、在word中画两条线,平行或相交。
2、同时选中两条线。
在VBE中ThisDocument模块中插入以下代码
  1. '* +++++++++++++++++++++++++++++
  2. '* Created By I Love You_Word!@ExcelHome 2005-3-24 15:34:44
  3. '仅测试于System: Windows NT Word: 10.0 Language: 2052
  4. '^The Code CopyIn [ThisDocument-ThisDocument]^'
  5. '* -----------------------------
  6. Option Explicit
  7. Sub GetIntersectPoints()
  8. Dim LineA As Variant, LineB As Variant, A1 As Single, A2 As Single, B1 As Single, B2 As Single
  9. Dim PointsArray() As Single, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single
  10. Dim X3 As Single, Y3 As Single, MyPoints As Shape, ParallelX As Byte, ParallelY As Byte
  11. On Error Resume Next '忽略错误(此处有很大作用)
  12. With Selection.ShapeRange '选定的图形对象
  13. If .Count <> 2 Or .Type <> msoLine Then MsgBox "错误的操作!导致出错的原因可能有:" _
  14. & vbCrLf & "1.没有选定;" & vbCrLf & "2.选定的自选图形不是直线;" _
  15. & vbCrLf & "3.选定的线条数量超过了二条或者不足二条; " & vbCrLf & _
  16. "4.其它.", vbOKOnly + vbExclamation, "Microsoft Word": Exit Sub
  17. Set LineA = .Item(1) '获得其中的对象之一
  18. Set LineB = .Item(2) '获得其中的对象之二
  19. With LineA.Nodes '对象一的几何图形
  20. PointsArray = .Item(1).Points '顶点之一坐标,是个数组
  21. X1 = PointsArray(1, 1) 'X轴
  22. Y1 = PointsArray(1, 2) 'Y轴
  23. PointsArray = .Item(2).Points '顶点之二坐标
  24. X2 = PointsArray(1, 1) 'X轴
  25. Y2 = PointsArray(1, 2) 'Y轴
  26. '判断是否为水平或者垂直线条
  27. If Y2 = Y1 Then ParallelY = ParallelY + 1: Y3 = Y1
  28. If X1 = X2 Then ParallelX = ParallelX + 1: X3 = X1
  29. End With
  30. '根据直线的定义Y=AX+B分别获得A1和B1值
  31. A1 = (Y2 - Y1) / (X2 - X1)
  32. B1 = Y1 - A1 * X1
  33. With LineB.Nodes '对象一的几何图形
  34. PointsArray = .Item(1).Points '顶点之一坐标
  35. X1 = PointsArray(1, 1) 'X轴
  36. Y1 = PointsArray(1, 2) 'Y轴
  37. PointsArray = .Item(2).Points '顶点之二坐标
  38. X2 = PointsArray(1, 1) 'X轴
  39. Y2 = PointsArray(1, 2) 'Y轴
  40. If Y2 = Y1 Then ParallelY = ParallelY + 1: Y3 = Y1
  41. If X1 = X2 Then ParallelX = ParallelX + 1: X3 = X1
  42. End With
  43. A2 = (Y2 - Y1) / (X2 - X1)
  44. B2 = Y1 - A2 * X1
  45. '提示
  46. If ParallelY = 2 Then MsgBox "平行的两条水平线条,Word无法找到交点!", _
  47. vbOKOnly + vbInformation, "Microsoft Word": Exit Sub
  48. If ParallelX = 2 Then MsgBox "平行的两条垂直线条,Word无法找到交点!", _
  49. vbOKOnly + vbInformation, "Microsoft Word": Exit Sub
  50. '如果两线相交 , 其交点位置的X / Y坐标为共有
  51. If X3 = 0 Then X3 = (B2 - B1) / (A1 - A2)
  52. If Y3 = 0 Then Y3 = A1 * X3 + B1
  53. End With
  54. '定义一个圆形(交点,其半径为1.5磅)
  55. Set MyPoints = ActiveDocument.Shapes.AddShape(msoShapeOval, X3 - 1.5, Y3 - 1.5, 3, 3)
  56. With MyPoints
  57. .Line.ForeColor = wdColorBlack '线条颜色
  58. .Fill.ForeColor = wdColorBlack '填充色
  59. .ZOrder msoBringToFront '置于顶层
  60. End With
  61. End Sub
  62. '----------------------
复制代码
运行该代码,则相交的线出现交点,不相交的线出现提示。

TA的精华主题

TA的得分主题

发表于 2017-6-4 12:49 | 显示全部楼层
hxhgxy 发表于 2005-3-24 18:33
守柔兄,给你一个好东西借鉴一下。顺便给你一个“艰巨”的任务,如何使连接线和图形连接很随意,而不必一 ...

我也想知道画两图形连接线的方法,及U形连接线的方法

TA的精华主题

TA的得分主题

发表于 2017-6-4 13:53 来自手机 | 显示全部楼层
几何中常需标两线夹角的小圆弧或小直角符号,并标角1、角a、角阿尔法等,能升级这个功能就实用了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 14:00 , Processed in 0.036921 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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