【发布时间】:2015-09-10 09:56:00
【问题描述】:
我正在为我的论文做一个项目,当我尝试使用 VBA 在 Excel 中绘制饼图时遇到错误。
我正在处理的数据的性质使我无法使用直线范围,因为数据分散在工作表上。
obseg(0) = "=List3!"
obseg(1) = "=List3!"
Range("K6").Select
Do Until completed
ActiveCell.Offset(1, 0).Select
'Application.Wait (Now() + TimeValue("00:00:01"))
If (ActiveCell.Value = "Čas:") Then
obseg(0) = obseg(0) & CStr(ActiveCell.Offset(-1, 0).Address) & ";List3!"
obseg(1) = obseg(1) & CStr(ActiveCell.Offset(-2, 1).Address) & ";List3!"
End If
If (IsEmpty(ActiveCell.Value)) Then
obseg(0) = obseg(0) & CStr(ActiveCell.Offset(-1, 0).Address)
If (IsEmpty(ActiveCell.Offset(-2, 1).Value)) Then
ActiveCell.Offset(-2, 1).Value = "neznana"
obseg(1) = obseg(1) & CStr(ActiveCell.Offset(-2, 1).Address)
Else
obseg(1) = obseg(1) & CStr(ActiveCell.Offset(-2, 1).Address)
End If
Exit Do
End If
Loop
这是收集这些数据并将字符串写入 obseg(0) 和 obseg(1) 的代码。 特定运行的结果给出了 obseg(0) 的结果:
=List3!$K$19;List3!$K$63;List3!$K$69;List3!$K$79;List3!$K$114;List3!$K$118;List3!$K$122;List3!$K$126;List3!$K$136;List3!$K$142;List3!$K$145
这是我在手动选择相同数据并运行宏记录器时得到的完全相同的字符串。然后该代码可以工作,但不能。代码新建图表时出现问题。
Charts.Add
ActiveChart.ChartType = xlPie
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).values = obseg(0)
ActiveChart.SeriesCollection(1).XValues = obseg(1)
这会返回并出错,停在第三行:
Runtime error '1004'
Application-defined or object-defined error
非常感谢您解释为什么会发生这种情况或任何帮助。
谢谢!
【问题讨论】:
-
更正:显然宏记录器生成的代码也不起作用。有什么方法可以让饼图接受我收到的数据字符串?
-
饼图只有一个系列,因此您需要先清除所有现有系列。饼图通常也不是图表类型的最佳选择。