我创建了一个宏,它产生一组两列和0到x行。(x =原始数据中的行数)。我正在用下一行代码绘制图表。
Set MyChart = Sheet3.Shapes.AddChart(xlColumnClustered).Chart
MyChart.SetSourceData Source:=Sheet2.Range("$A$1:$A$10,$b$1:$b$10")
这将只绘制十大数据。问题是有些行我少于10行。那么,有没有办法让VBA忽略最后一个数据单元下的空对单元?
UPDATE1: 我需要使用colum图表,我将删除工作表中的任何过去的图表并添加一个新图表 感谢。
答案 0 :(得分:1)
这不是VBA编程问题本身。您需要使用XY散点图表,其中您在电子表格中指定了X轴和Y轴。
然后,您可以将图表设置设置为“忽略隐藏和空白单元格”
然后,即使使用额外的单元格,也可以使用相同的代码将图表更新到任何范围。
如果您的公式仅为前10个数字提供有用的值,之后为“空白”,请确保使用函数<#p>将'空白'替换为#NA
=IFERROR(YourCell x 1, NA())
虽然NA()在电子表格上看起来很丑陋,但它对于图表来说非常好,因为图表只是忽略了这一点,然后你可以设置图表来绘制
取而代之(取决于您的设置)
对于任何其他类型的图表,除非您使用WorkSheet Change
事件跟踪电子表格中的更改,否则无法执行此操作。
应该从工作表(而不是模块)中的此事件处理程序调用重新调整图表类别和值数据大小的代码
Private Sub Worksheet_Change(ByVal Target As Range)
' Code to handle the change, stuffing the chart category and value data goes here
End Sub
在最糟糕的情况下,您无法更改范围大小,您可以在电子表格中将范围声明为动态,并按名称引用它。
在此MSFT知识库中,您将获得有关动态定义范围的信息。 http://support.microsoft.com/kb/830287
答案 1 :(得分:0)
Sub test()
Dim MyChart As Chart
Dim Ws As Worksheet
Set Ws = Sheet3
With Ws
If .ChartObjects.Count > 0 Then
.ChartObjects.Delete
End If
Set MyChart = .Shapes.AddChart(xlColumnClustered).Chart
MyChart.SetSourceData Source:=Sheet2.Range("a1").CurrentRegion
End With
End Sub