设置标题后立即没有图表标题错误

时间:2018-05-29 14:10:08

标签: excel vba charts

我正在创建一个生成条形图的宏。我在两台计算机上运行此代码。它在一台计算机上运行良好。另一个生成一个"这个对象没有标题"错误。

问题是,它上面的一行声明它有一个。如果我上升一行并在声明处重新启动代码,它会继续正常。它甚至创建了另外2个图表,就像它使用相同的代码(从这个具有微妙重命名的粘贴的副本)一样,只是为其他列中的类似数据而零售,并且没有错误。

我能想到的最好的权宜之计是进行错误检查并将其重新启动以重新运行,但这并不能解释行为。

有问题的部分如下所示:

WsDBar.HasTitle = True
WsDBar.ChartTitle.Text = "Phase-A Error Breakdown"

有关为什么/如何无法更新以获得标题以及如何解决该问题的想法?

使用更多代码进行编辑:

WsDBar.ChartType = xlColumnClustered

WsDBar.SetSourceData Source:=DBarData

For i = 1 To 5
If WsDBar.FullSeriesCollection.Count < 5 Then WsDBar.SeriesCollection.NewSeries
If WsDBar.FullSeriesCollection.Count > 5 Then WsDBar.SeriesCollection(6).Delete
WsDBar.FullSeriesCollection(i).name = WsCD.Cells(2, i + 8).Value
WsDBar.FullSeriesCollection(i).Values = WsCD.Range(WsCD.Cells(3, i + 8), WsCD.Cells(RowCountCD, i + 8))
WsDBar.FullSeriesCollection(i).XValues = WsCD.Range("A3:A" & RowCountCD)
WsDBar.FullSeriesCollection(i).Interior.ColorIndex = (i + 41)
Next

我所做的就是将破碎的区域变成这样:

ReloopD:
On Error Resume Next

WsDBar.HasTitle = True
If WsDBar.HasTitle = False Then
    LoopCount = LoopCount + 1
    If LoopCount > 100 Then Stop
    GoTo ReloopD
End If
WsDBar.ChartTitle.Text = "Phase-A Error Breakdown"
'y-axis name
WsDBar.Axes(xlValue, xlPrimary).HasTitle = True
If WsDBar.Axes(xlValue, xlPrimary).HasTitle = False Then
    LoopCount = LoopCount + 1
    If LoopCount > 100 Then Stop
    GoTo ReloopD
End If
WsDBar.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "# of Items"

我需要尝试我给出的其他选项。谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

WsDBar.ChartTitle.Caption = "Phase-A System Error Breakdown"

而不是

WsDBar.ChartTitle.Text= "Phase-A System Error Breakdown"

答案 1 :(得分:0)

有时候VBA在尝试下一次操作之前没有完成一次操作。它可能已经开始添加标题,但也许标题的文本框还没有准备接受任何内容,所以第二行崩溃。

您可以插入 column1 a1 amount currency a3 column3 column4 0 a 1 20 USD 57.0 10 11 1 a 4 50 USD NaN 10 11 2 a 7 80 USD NaN 10 11 3 b 13 140 USD NaN 16 17 4 b 2 50 USD NaN 16 17 5 b 3 90 USD NaN 16 17 6 c 8 75 USD NaN 11 12 7 c 9 90 USD 98.0 11 12 8 c 6 10 USD NaN 11 12 ,告诉VBA等到Windows处理了它负责的所有内容。

pd.read_json()

修改:有时候一个DoEvents还不够。以下循环遍历违规语句,直到错误发生:

WsDBar.HasTitle = True
DoEvents
WsDBar.ChartTitle.Text = "Phase-A System Error Breakdown"