使用VBA-Excel97绘图
2006-02-27 11:43:00 来源:WEB开发网核心提示:Excel97是MICROSOFT公司出版的电子表格程序,它的处理数据的功能十分强大,使用VBA-Excel97绘图,但再好的软件都有它的一定的局限性,为了解决EXCEL97的局限性EXCEL97/2000内置了一个宏程序编辑器(如下图),是删除图片用的!点击一下就可以删除您的曲线图了)代码如下(把它放到模块中):这段
----Excel97是MICROSOFT公司出版的电子表格程序,它的处理数据的功能十分强大,但再好的软件都有它的一定的局限性,为了解决EXCEL97的局限性EXCEL97/2000内置了一个宏程序编辑器(如下图),以解决更多的人的更多需要。
----在日常工作中,我们经常使用到绘图程序,如用CAD绘制图形,如果想绘制一个要求精度不是太高的图纸那么CAD就有点大材小用了,如果只是作为您的参考:比如股市走向用它看看行情,那么您完全可以使用它———VBAFOREXCEL97/2000皆可(全称为VISUALBASICFORapplication以后简称VBA)。
----一个网民曾经问过我:如果:给出X和Y轴能不能让EXCEL97的宏程序也划出一个曲线图呢?而不用EXCEL97的图表功能?
----为此我考虑使用EXCEL97中的SHAPE对象来编写这个程序,经过我的一天努力终于搞出了一段VBA程序,使用起来也十分方便!我想如果您认为可以近一步扩展,您还可以沿着我的思路,近一步深化编写,编写出一个自己满意的小程序!在启动EXCEL97时别忘记“启用宏”,否则无法运行!界面如上图.
----点击绘图按钮后,弹出对话框提示输入延伸的行数!(如果输入大于对话框中的值时将只得到曲线图没有数值)如下图(略)
----绘制的图形如下(略):(并出现一个删图按钮,是删除图片用的!点击一下就可以删除您的曲线图了)
代码如下(把它放到模块中):
这段代码是绘制一个曲线图:
Subdrawing()
'Liuzhengwelcomeyoutovisitmyhomepage
http://grwy.online.ha.cn/vba_excel97/
Range("a1").Select
Selection.CurrentRegion.Select
myrow=Selection.Rows.Count
'计算行数
my=Application.InputBox("输入延伸的行数。"
&Chr(13)&Chr(13)&"提示:如果输入"
&myrow 1&",将只绘制线条"&Chr(13)
&Chr(13)&"(没有数值!)",
"用VBA绘图",Default:=myrow)
'弹出输入对话框
Ifmy=CancelThen
Range("a1").Select
ExitSub
EndIf
'条件测试
ActiveSheet.Shapes.SelectAll
Selection.Delete
'删除所有的SHAPES
ActiveSheet.Buttons.Add(245.25,34.5,102,36).Select
b=Selection.Name
Selection.OnAction="del_shapes"
ActiveSheet.Shapes(b).Select
Selection.Characters.Text="删图"
WithSelection.Characters(Start:=1,Length:=3).Font
.Size=22
.Shadow=True
EndWith
'做一个删除按钮
WithActiveSheet.Shapes.BuildFreeform(msoEditingAuto,
Range("a2").Value,Range("b2").Value)
Fori=3Tomy
IfRange("a"&i).Value=""
AndRange("b"&i).Value=""Then
.ConvertToShape.Select
ExitSub
EndIf
.AddNodesmsoSegmentCurve,msoEditingAuto,
Range("a"&i).Value,Range("b"&i).Value
Nexti
.ConvertToShape.Select
EndWith
Fori=2Tomy
a=Range("a"&i).Value
b=Range("b"&i).Value
ActiveSheet.Shapes.AddShape(msoShapeRectangle,
a,b,48.75,21).Select
Selection.Characters.Text=a&","&b
WithSelection.Characters(Start:=1,Length:=6).Font
.Name="TimesNewRoman"
EndWith
Selection.HorizontalAlignment=xlCenter
Selection.ShapeRange.Fill.Visible=msoFalse
Selection.ShapeRange.Fill.Transparency=0#
Selection.ShapeRange.Line.Transparency=0#
Selection.ShapeRange.Line.Visible=msoFalse
ActiveSheet.Shapes.AddShape(msoShapeOval,a,b,1.5,1.5).Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor=5
NextI
'以上是用VBA绘图
MsgBox"欢迎参观我的个人主页
http://grwy.online.ha.cn/vba_excel97/或者
http://202.102.233.10/64215258/",vbInformation,"用VBA绘图"
Range("B1").Select
EndSub
'这段代码为:删除图片,并再做一个绘图按钮
Subdel_shapes()
ActiveSheet.Shapes.SelectAll
Selection.Delete
Application.ScreenUpdating=False
ActiveSheet.Buttons.Add(245.25,34.5,102,36).Select
b=Selection.Name
Selection.OnAction="drawing"
ActiveSheet.Shapes(b).Select
Selection.Characters.Text="绘图"
WithSelection.Characters(Start:=1,Length:=3).Font
.Size=22
.Shadow=True
EndWith
Range("B1").Select
EndSub
----以上程序在EXCEL97和2000中调试通过!
----注意在启动EXCEL97时别忘记“启用宏”,否则无法运行!->
----在日常工作中,我们经常使用到绘图程序,如用CAD绘制图形,如果想绘制一个要求精度不是太高的图纸那么CAD就有点大材小用了,如果只是作为您的参考:比如股市走向用它看看行情,那么您完全可以使用它———VBAFOREXCEL97/2000皆可(全称为VISUALBASICFORapplication以后简称VBA)。
----一个网民曾经问过我:如果:给出X和Y轴能不能让EXCEL97的宏程序也划出一个曲线图呢?而不用EXCEL97的图表功能?
----为此我考虑使用EXCEL97中的SHAPE对象来编写这个程序,经过我的一天努力终于搞出了一段VBA程序,使用起来也十分方便!我想如果您认为可以近一步扩展,您还可以沿着我的思路,近一步深化编写,编写出一个自己满意的小程序!在启动EXCEL97时别忘记“启用宏”,否则无法运行!界面如上图.
----点击绘图按钮后,弹出对话框提示输入延伸的行数!(如果输入大于对话框中的值时将只得到曲线图没有数值)如下图(略)
----绘制的图形如下(略):(并出现一个删图按钮,是删除图片用的!点击一下就可以删除您的曲线图了)
代码如下(把它放到模块中):
这段代码是绘制一个曲线图:
Subdrawing()
'Liuzhengwelcomeyoutovisitmyhomepage
http://grwy.online.ha.cn/vba_excel97/
Range("a1").Select
Selection.CurrentRegion.Select
myrow=Selection.Rows.Count
'计算行数
my=Application.InputBox("输入延伸的行数。"
&Chr(13)&Chr(13)&"提示:如果输入"
&myrow 1&",将只绘制线条"&Chr(13)
&Chr(13)&"(没有数值!)",
"用VBA绘图",Default:=myrow)
'弹出输入对话框
Ifmy=CancelThen
Range("a1").Select
ExitSub
EndIf
'条件测试
ActiveSheet.Shapes.SelectAll
Selection.Delete
'删除所有的SHAPES
ActiveSheet.Buttons.Add(245.25,34.5,102,36).Select
b=Selection.Name
Selection.OnAction="del_shapes"
ActiveSheet.Shapes(b).Select
Selection.Characters.Text="删图"
WithSelection.Characters(Start:=1,Length:=3).Font
.Size=22
.Shadow=True
EndWith
'做一个删除按钮
WithActiveSheet.Shapes.BuildFreeform(msoEditingAuto,
Range("a2").Value,Range("b2").Value)
Fori=3Tomy
IfRange("a"&i).Value=""
AndRange("b"&i).Value=""Then
.ConvertToShape.Select
ExitSub
EndIf
.AddNodesmsoSegmentCurve,msoEditingAuto,
Range("a"&i).Value,Range("b"&i).Value
Nexti
.ConvertToShape.Select
EndWith
Fori=2Tomy
a=Range("a"&i).Value
b=Range("b"&i).Value
ActiveSheet.Shapes.AddShape(msoShapeRectangle,
a,b,48.75,21).Select
Selection.Characters.Text=a&","&b
WithSelection.Characters(Start:=1,Length:=6).Font
.Name="TimesNewRoman"
EndWith
Selection.HorizontalAlignment=xlCenter
Selection.ShapeRange.Fill.Visible=msoFalse
Selection.ShapeRange.Fill.Transparency=0#
Selection.ShapeRange.Line.Transparency=0#
Selection.ShapeRange.Line.Visible=msoFalse
ActiveSheet.Shapes.AddShape(msoShapeOval,a,b,1.5,1.5).Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor=5
NextI
'以上是用VBA绘图
MsgBox"欢迎参观我的个人主页
http://grwy.online.ha.cn/vba_excel97/或者
http://202.102.233.10/64215258/",vbInformation,"用VBA绘图"
Range("B1").Select
EndSub
'这段代码为:删除图片,并再做一个绘图按钮
Subdel_shapes()
ActiveSheet.Shapes.SelectAll
Selection.Delete
Application.ScreenUpdating=False
ActiveSheet.Buttons.Add(245.25,34.5,102,36).Select
b=Selection.Name
Selection.OnAction="drawing"
ActiveSheet.Shapes(b).Select
Selection.Characters.Text="绘图"
WithSelection.Characters(Start:=1,Length:=3).Font
.Size=22
.Shadow=True
EndWith
Range("B1").Select
EndSub
----以上程序在EXCEL97和2000中调试通过!
----注意在启动EXCEL97时别忘记“启用宏”,否则无法运行!->
更多精彩
赞助商链接