【问题标题】:Draw in a chart (not a chart object but a Chart) with vba用 vba 绘制图表(不是图表对象而是图表)
【发布时间】:2013-06-06 04:28:27
【问题描述】:

我会尽量准确地解决我的问题,但如果您有任何问题,请提出!

所以基本上我有一列 A 充满日期(从第 1 行到第 80 行)和一列 B 充满值(股票价格,也具有相同的范围)。 我用这段代码创建了一个图表:

Sub Chart()
   Range(Cells(1, 1), Cells(80, 1))Select
   Range(Selection, Selection.Offset(0, 1)).Select
   Set rSource=selection
   ActiveChart.SetSourceData Source:=rSource, PlotBy:=xlColumns
   ActiveChart.Location Where:=xlLocationAsNewSheet
end sub

所以这不是图表对象,而是新工作表上的新图表(我之所以这么说,是因为我在这个主题上阅读的所有内容都是处理图表对象,而不是单独处理工作表中的图表)。 现在我需要在两个日期之间画一条水平线(一条支撑线)。 例如,我需要在 01/01/2013(第 1 行)和 06/25/2013(第 80 行)之间画一条线。 这条线必须保持在 y 轴上的同一水平(这就是我们所说的水平线 :))与 2013 年 1 月 1 日的股价水平。

我试过了:

Sub supportline()
Dim CoordA As Variant
CoordA = [a1:b80]
ActiveChart.Shapes.AddLine(CoordA(1, 1), CoordA(1, 2), CoordA(80, 1), CoordA(80, 2)).Select
end sub

但是这条线没有画在我想要的地方。我认为存在比例问题,但我无法弄清楚如何获得准确的坐标。

非常感谢您的宝贵时间和帮助

编辑(2013 年 6 月 11 日) 我已经简化了数据库来说明我的问题:http://cjoint.com/?CFksHluf0VD 我试图在两个日期(01/01/2013 和 16/01/2013)之间划一条线

如果您下载此文件,您将在 VBA 部分看到:1/ Test1:我尝试制作一条线来链接图表的 2 个点:如果您启动子程序,您会看到这条线已绘制但在错误的比例和错误的位置 2/ 测试 2:我试图在两点之间画一条水平线,但这根本不起作用

测试 2 是我需要为我的原始项目做的(一条从一个日期到另一个日期的水平线,具有相同的 y 值)

【问题讨论】:

  • 不,这只是一个例子,但我需要从两个日期开始画线,这两个日期不是该系列的第一个和最后一个数据。我必须用 VBA 代码来做。
  • 对不起,我没有回答你的第二个问题。当我说工作表时,我的意思是我的图表在图表(集合)中是单独的。如果你不明白,你可以下载我上一篇文章中的文件

标签: vba charts line draw


【解决方案1】:
ActiveChart.SeriesCollection(1).Select

With Selection.Format.Line

.Visible = msoTrue
//add line style etc

End with

然后使用您的选择语句来选择您想要加入的点。

如果您查看此链接,我认为您会发现它最有用

VBA 控制的折线图线条条件格式

http://peltiertech.com/WordPress/conditional-formatting-of-lines-in-an-excel-line-chart-using-vba/

关于堆栈溢出的另一个问题

Excel VBA - How do you set line style for chart series?

针对您的 cmets,请参阅此问题的答案。它为使用图表提供了一些很好的解释(在本例中为 vb.net)

Chart: Show more value descriptions on X-Axis

还有一个指向 MSDN 的链接

http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.chart.aspx

【讨论】:

  • 我明白你的意思,但不幸的是这不起作用:“addline”适用于“shapes”(msdn.microsoft.com/en-us/library/office/…)但“shapes”不能应用于“points”(@987654326 @ ) 所以我写了 ActiveChart.SeriesCollection(1).points(1).shapes.AddLine(CoordA(1, 1), CoordA(1, 2), CoordA(80, 1), CoordA(80, 2))。选择但它不起作用
  • 是的,我需要一些帮助来编写代码,因为我不知道该怎么做我很抱歉折线图必须是水平的 非常简单的解决方案是创建一个新图表与第三系列数据?所以基本上,如果我们收回我的旧示例,我必须在 C 列中从第 1 行到第 16 行写入值 20?然后选择范围(“A1:C20”)并创建一个新图表?
  • 事实上,它就是这样工作的!我只需要录制宏,它就可以与 VBA 一起使用!!非常感谢您的帮助
  • 我不能投票,因为我没有足够的声誉!谢谢 ! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多