1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[转贴]使用VBA-Excel绘图

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-8-18 18:52 | 显示全部楼层 |阅读模式

http://www.yesky.com/20010919/197626.shtml

使用VBA-Excel绘图   ---- EXCEL97是MICROSOFT公司出版的电子表格程序,它的处理数据的功能十分强大,但再好的软件都有它的一定的局限性,为了解决EXCEL97的局限性EXCEL97/2000内置了一个宏程序编辑器,以解决更多的人的更多需要。   ---- 在日常工作中,我们经常使用到绘图程序,如用CAD绘制图形,如果想绘制一个要求精度不是太高的图纸那么CAD就有点大材小用了,如果只是作为您的参考:比如股市走向用它看看行情,那么您完全可以使用它———VBA FOR EXCEL97/2000皆可(全称为VISUAL BASIC FOR APPLICATION以后简称VBA)。   ---- 一个网民曾经问过我:如果:给出X和Y轴能不能让EXCEL97的宏程序也划出一个曲线图呢?而不用EXCEL97的图表功能?   ---- 为此我考虑使用EXCEL97中的SHAPE对象来编写这个程序,经过我的一天努力终于搞出了一段VBA程序,使用起来也十分方便!我想如果您认为可以近一步扩展,您还可以沿着我的思路,近一步深化编写,编写出一个自己满意的小程序!在启动EXCEL97时别忘记“启用宏”,否则无法运行!   ---- 点击绘图按钮后,弹出对话框提示输入延伸的行数!(如果输入大于对话框中的值时将只得到曲线图没有数值)   代码如下(把它放到模块中):   这段代码是绘制一个曲线图: Sub drawing()  ' Liuzheng welcome you to visit my homepage  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)  '弹出输入对话框  If my = Cancel Then   Range("a1").Select   Exit Sub  End If  '条件测试  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 = "删图"  With Selection.Characters(Start:=1, Length:=3).Font     .Size = 22     .Shadow = True  End With  '做一个删除按钮  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, Range("a2").Value, Range("b2").Value)   For i = 3 To my   If Range("a" & i).Value = "" And Range("b" & i).Value = "" Then     .ConvertToShape.Select     Exit Sub   End If   .AddNodes msoSegmentCurve, msoEditingAuto,       Range("a" & i).Value, Range("b" & i).Value   Next i   .ConvertToShape.Select  End With  For i = 2 To my   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   With Selection.Characters(Start:=1, Length:=6).Font     .Name = "Times New Roman"   End With   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  Next I  '以上是用VBA绘图  MsgBox "欢迎参观我的个人主页  http://grwy.online.ha.cn/vba_excel97/或者  http://202.102.233.10/64215258/", vbInformation, "用VBA绘图"   Range("B1").Select End Sub '这段代码为:删除图片,并再做一个绘图按钮 Sub del_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 = "绘图"   With Selection.Characters(Start:=1, Length:=3).Font     .Size = 22     .Shadow = True   End With   Range("B1").Select End Sub   ---- 以上程序在EXCEL97和2000中调试通过!   ---- 注意在启动EXCEL97时别忘记“启用宏”,否则无法运行!

[此贴子已经被作者于2005-8-18 20:04:45编辑过]

TA的精华主题

TA的得分主题

发表于 2005-8-18 19:58 | 显示全部楼层

.ConvertToShape.Select

调试不过

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-19 23:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Creating Charts in Excel 2003 Using Visual Basic for Applications Code

http://msdn.microsoft.com/office ... artsheetwithvbacode

*******************Adding a Chart Sheet with VBA Code***************

Sub AddChartSheet() Dim chtChart As Chart 'Create a new chart. Set chtChart = Charts.Add With chtChart .Name = "Tool Sales2" .ChartType = xlColumnClustered 'Link to the source data range. .SetSourceData Source:=Sheets("Sheet1").Range("A1:D5"), _ PlotBy:=xlRows .HasTitle = True .ChartTitle.Text = "=Sheet1!R1C2" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Month" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Sales" End With End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-20 09:42 | 显示全部楼层

不好意思,这些代码我都没测试过,只是想先贴出来,以后要使用时方便查找和再修改.

当然更希望论坛中有时间精力的高手们不断更新改进!

谢谢斑竹的提示!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-20 11:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

个人评估业绩表

需要图表分析的朋友,请参考“个人评估业绩表” AbutSqZX.rar (12.42 KB, 下载次数: 189)

[此贴子已经被作者于2005-8-20 11:37:06编辑过]

ehQViuLL.rar

15.36 KB, 下载次数: 183

[转贴]使用VBA-Excel绘图

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-20 21:43 | 显示全部楼层

ChartExamples

ChartExamples 5fHY8Ri6.rar (9.78 KB, 下载次数: 242)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-21 20:22 | 显示全部楼层

■ActiveX_Chart

请双击ExcelChart,不用点excel文件! zKK8bqs5.rar (30.55 KB, 下载次数: 217)

TA的精华主题

TA的得分主题

发表于 2005-8-22 10:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢welcpa分享!只是随即设置系列颜色代码中有些语句冗赘(已注释掉):

Public Sub TestSeries() Dim mySeries As Series Dim seriesCol As SeriesCollection Dim ranNum1 As Integer, ranNum2 As Integer, ranNum3 As Integer Dim I As Integer Randomize ' I = 1 'Set reference to the series collection Set seriesCol = ActiveChart.SeriesCollection 'Loop through each series in chart and alter marker colors For Each mySeries In seriesCol ranNum1 = Rnd * 256: ranNum2 = Rnd * 256: ranNum3 = Rnd * 256 ' Set mySeries = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(I) With mySeries .MarkerBackgroundColor = RGB(ranNum1, ranNum2, ranNum3) .MarkerForegroundColor = RGB(ranNum1, ranNum2, ranNum3) .Border.Color = RGB(ranNum1, ranNum2, ranNum3) End With ' I = I + 1 Next End Sub

[此贴子已经被作者于2005-8-22 11:33:39编辑过]

TA的精华主题

TA的得分主题

发表于 2005-8-20 09:27 | 显示全部楼层

为什么要用这么多的Select,省掉后更专业些。

TA的精华主题

TA的得分主题

发表于 2007-10-4 20:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

EXCEL VBA 如何用鼠标绘图

各位高手,看了你们的EXCEL文件,但是我现在遇到一个问题,就是如何在EXCL用VBA设计一个程序,能用鼠标绘出图来
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-21 23:49 , Processed in 0.028214 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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