求教Excel Vba 画同心圆的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 02:30:18
Sub txy()
Set myShe = Application.ActiveSheet '设置对象变量
'Set myJh = New Collection '设置新集合变量
myleft = Application.ActiveCell.Left + 10 '获得激活单元格的左边距
mytop = Application.ActiveCell.Top + 10 '获得激活单元格的上边距

With myShe.Shapes.AddShape(msoShapeOval, myleft, mytop, 50, 50) '添加园 msoShapeOval椭圆形
.Fill.Transparency = 1 '设置形状为透明
.Line.Weight = myXt + 0.75 '设置线条宽度
.Line.ForeColor.RGB = myRGB '设置前景色
End With
End Sub
用上面代码画圆,想再画个同心圆参数应该怎么改,我怎么改都不对,又没找到那四个参数的意义。谢高手帮助。
多谢fushxp,我才接触Excel Vba,很多基本问题不明白。
( myleft, mytop, 50, 50) 这四个数据不太明白。myleft, mytop是圆的左上点 50,50似乎不是圆的右下点啊
================================================================
fushxp,你的回答太精准了。非常感谢。
不知道这些知识哪里有系统的介绍,我没找到好资料。
来回答我这个问题吧: http://zhidao.baidu.com/question/127492352.html

Excel的Shape.ScaleWidth和 Shape.ScaleHeight方法虽然有个msoScaleFromMiddle参数,但是实际上并没法从圆心开始放大,因此你干脆就在原来圆的基础上重心画圆。
下列代码只是在你代码的基础上修改的,主要只是如何确定其它圆左上角的位置。但一次只能画一个圆。如果你需要很多这样的同心圆,则需要你修改一下代码,将新的放大比率赋值给数组变量,然后用一个简单的循环去读取数组。

Sub txy()
Const r1 = 25
Const startpos = 10

Dim r2 As Single
Dim ratio As Single

Set myShe = Application.ActiveSheet '设置对象变量
'Set myJh = New Collection '设置新集合变量
myleft = Application.ActiveCell.Left + startpos '获得激活单元格的左边距
mytop = Application.ActiveCell.Top + startpos '获得激活单元格的上边距
With myShe.Shapes.AddShape(msoShapeOval, myleft, mytop, r1 * 2, r1 * 2) '添加园 msoShapeOval椭圆形
.Fill.Transparency = 1 '设置形状为透明
.Line.Weight = myXt + 0.75 '设置线条宽度
.Line.ForeColor.RGB = myRGB '设置前景色
End With

ratio = 0.8 '设置放大比例
r2 = r1 * ratio

myleft = Application.ActiveCell.Left - (r2 - (startpos + r1)) '获得激活单元格的左边距<