在WORD中画带箭头的线段的VBA代码如何写?
时间:2010-06-11
来源:互联网
下面是画直线的VBA:
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=200, BeginY:=20, EndX:=200, EndY:=50)
画带箭头的线段,守柔版主已经解决(见2楼),那我再问:比如我用
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=200, BeginY:=20, EndX:=200, EndY:=50)
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=240, BeginY:=20, EndX:=240, EndY:=50)
画了两条线段,能不能用VBA代码来组合刚才的两条线段呢?
[ 本帖最后由 yb010 于 2010-6-22 22:28 编辑 ]
作者: yb010 发布时间: 2010-06-11
引用:
原帖由 yb010 于 2010-6-11 14:47 发表请教:在WORD中画带箭头的线段的VBA代码如何写?左箭头;右箭头;双向前头分别如何写?
下面是画直线的VBA:
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=200, BeginY:=20, EndX:=200, EndY:=50)
该示例为活动文档添加一条线段。线段的起点有一个短且窄的椭圆,终点有一个长且宽的三角形。
Dim docActive As Document
Set docActive = ActiveDocument
With docActive.Shapes.AddLine(100, 100, 200, 300).Line
.BeginArrowheadLength = msoArrowheadShort
.BeginArrowheadStyle = msoArrowheadOval
.BeginArrowheadWidth = msoArrowheadNarrow
.EndArrowheadLength = msoArrowheadLong
.EndArrowheadStyle = msoArrowheadTriangle
.EndArrowheadWidth = msoArrowheadWide
End With
作者: 守柔 发布时间: 2010-06-21
太凶呀!VBA完全是无所不能的样,只有我想不到的,没有版主做不到的!
[ 本帖最后由 yb010 于 2010-6-22 22:16 编辑 ]
作者: yb010 发布时间: 2010-06-22
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=200, BeginY:=20, EndX:=200, EndY:=50)
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=240, BeginY:=20, EndX:=240, EndY:=50)
画了两条线段,能不能用VBA代码来组合刚才的两条线段呢?
作者: yb010 发布时间: 2010-06-22
引用:
原帖由 yb010 于 2010-6-22 22:26 发表再问:比如我用
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=200, BeginY:=20, EndX:=200, EndY:=50)
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=240, BeginY:=20, EndX:=240, EndY:=50)
...
Dim XlineNew_1 As Shape
Dim XlineNew_2 As Shape
Dim vntArray As Variant
With ActiveDocument.Shapes
Set XlineNew_1 = .AddLine(BeginX:=200, BeginY:=20, EndX:=200, EndY:=50)
Set XlineNew_2 = .AddLine(BeginX:=240, BeginY:=20, EndX:=240, EndY:=50)
vntArray = Array(XlineNew_1.Name, XlineNew_2.Name)
.Range(vntArray).Group
End With
End Sub
作者: 守柔 发布时间: 2010-06-23
Sub 画坐标系()
Dim n1 As String, n2 As String, Xmax As String, Ymax As String, nn As String
Const n As Integer = 240 '设置方格左上角的起始位置
yb1: Xmax = InputBox("请输入需要多少刻度单位:", Xmax)
If Xmax = "" Or Xmax < "1" Then
MsgBox "刚才你的输入有误,请您重新输入!"
GoTo yb1:
End If
ReDim daima(1 To Xmax+2)
ReDim XlineNew(Xmax+2) As Shape
With ActiveDocument.Shapes
For i = 1 To Xmax +1
Set XlineNew(i) = .AddLine(BeginX:=n + 20 * i, BeginY:=n, EndX:=n + 20 * i, EndY:=n + 5)
daima(i) = XlineNew(i).Name
Next i
Set XlineNew(Xmax + 2) = .AddLine(n, n + 5, n + 5 + 20 * (Xmax + 2), n + 5)
daima(Xmax + 2) = XlineNew(Xmax + 2).Name
With XlineNew(Xmax + 2).Line
'.BeginArrowheadLength = msoArrowheadShort
' .BeginArrowheadStyle = msoArrowheadOval
' .BeginArrowheadWidth = msoArrowheadNarrow
.EndArrowheadLength = msoArrowheadLong
.EndArrowheadStyle = msoArrowheadTriangle
.EndArrowheadWidth = msoArrowheadWidthMedium
End With
.Range(daima).Group
End With
End Sub
可利用此代码制作坐标系!
[ 本帖最后由 yb010 于 2010-6-23 21:00 编辑 ]
作者: yb010 发布时间: 2010-06-23
测试了一下6楼的代码,提示"运行时错误"9",下标越界"
[ 本帖最后由 tangqingfu 于 2010-6-23 20:55 编辑 ]
作者: tangqingfu 发布时间: 2010-06-23
引用:
原帖由 tangqingfu 于 2010-6-23 20:53 发表谢谢yb010MM的代码,巾帼不让须眉!向您学习!
测试了一下6楼的代码,提示"运行时错误"9",下标越界"
作者: yb010 发布时间: 2010-06-23
谢谢yb010MM的分享!
能否也提供个不带箭头的线段的VBA代码?
作者: tangqingfu 发布时间: 2010-06-23
引用:
原帖由 tangqingfu 于 2010-6-23 21:10 发表PF!!测试通过!
谢谢yb010MM的分享!
能否也提供个不带箭头的线段的VBA代码?
With XlineNew(Xmax + 2).Line
'.BeginArrowheadLength = msoArrowheadShort
' .BeginArrowheadStyle = msoArrowheadOval
' .BeginArrowheadWidth = msoArrowheadNarrow
.EndArrowheadLength = msoArrowheadLong
.EndArrowheadStyle = msoArrowheadTriangle
.EndArrowheadWidth = msoArrowheadWidthMedium
End With
你试试
作者: yb010 发布时间: 2010-06-23
Private Sub CommandButton1_Click()
Const n As Integer = 180 '设置方格左上角的起始位置
Dim i, j As Single '设置两个i,j循环变量
Dim Xmax, Ymax As Single '设置X和Y方格最大的变量值
Dim XlineNew As Shape '创建水平格数XlineNew变量为Shape
Dim YlineNew As Shape '创建竖直格数YlineNew变量为Shape
Xmax = Me.TextBox2 'TextBox2的值赋给Xmax
Ymax = Me.TextBox1 'TextBox1的值赋给Ymax
For i = 0 To Xmax
Set XlineNew = ActiveDocument.Shapes.AddLine(BeginX:=n + 10 * i, BeginY:=n, EndX:=n + 10 * i, EndY:=n + 10 * Ymax)
' .Select
Next
'画水平上的方格总数
For j = 0 To Ymax
Set YlineNew = ActiveDocument.Shapes.AddLine(BeginX:=n, BeginY:=n + 10 * j, EndX:=n + 10 * Xmax, EndY:=n + 10 * j)
' .Select
Next
'画竖直上的方格总数
ActiveDocument.Shapes.AddLine(n, 160, n, 180).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Flip msoFlipHorizontal
Selection.ShapeRange.Flip msoFlipVertical
'.Select
ActiveDocument.Shapes.AddLine(n + Xmax * 10, n + Ymax * 10, n + Xmax * 10 + 20, n + Ymax * 10).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Flip msoFlipVertical
' .Select
ActiveDocument.Shapes.SelectAll
Selection.ShapeRange.Group.Select
UserForm1.HIDE
End Sub
作者: shywkb 发布时间: 2011-06-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28