运行时错误'424':设置AxisTitle.Text时需要对象

时间:2015-04-23 21:42:58

标签: excel-vba vba excel

我编辑了一个图表,并在执行此操作时捕获了一个宏。然后我想将vba复制并粘贴到其他vba文件中。我没有改变任何东西并保留了整个代码。但是在下一行总是存在对象所需的错误(424):

ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Kraft"

背景是:

ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "Messung 1"
Selection.Format.TextFrame2.TextRange.Characters.Text = "Messung 1"
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).ParagraphFormat
    .TextDirection = msoTextDirectionLeftToRight
    .Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).Font
    .BaselineOffset = 0
    ...
End With
ActiveChart.ChartArea.Select
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Kraft"

我希望有人可以提供帮助。

3 个答案:

答案 0 :(得分:0)

虽然你已经使用宏进行了录制并且它应该自动播放,但在标签文本的情况下它似乎没有(我遇到了同样的问题)。

解决方案是使用此代码,从微软网站

收集
result = dbContext.Journals.ToList();
result.Where(tr => ((!String.IsNullOrEmpty(SearchParam1) && tr.Field1.StartsWith(SearchParam1)) 
                 || ( !String.IsNullOrEmpty(SearchParam2) && tr.Field2.StartsWith(SearchParam2)))
      .GroupBy(f => f.ID)
      .SelectMany(g => g.Select(x=> new { ID = g.Key.ID, x.Field1, x.Field2 })) 
      .ToList();

https://msdn.microsoft.com/en-us/library/office/ff839276.aspx

我也在这个堆栈溢出帖子中找到了解决方案 Excel 2007 VBA Problem setting Axis Title

答案 1 :(得分:0)

尝试下面的代码,我测试了该方法,它适用于Office 365 Excel(最新版​​本)。

ActiveSheet.ChartObjects("Chart Name").Activate
With ActiveChart
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X Axis Title"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y Axis Title"
End With

顺便说一句,我还发现Excel为ActiveChart录制的宏将返回此错误。我找到了this link以及对VBA的ActiveChart的一些解释,也许它会有所帮助。

  

Excel中有两种不同类型的图表:   1.一张是由整张纸(图表)组成的图表。图表工作表不是工作表。图表(1)是第一张图表   工作簿。   另一个是放在工作表顶部的图表 - "嵌入式"在工作表上。工作表图表周围有一个容器,称为a   "图表对象"。因此,您必须识别图表对象   在您可以指定要引用的特定图表之前   为... ActiveSheet.ChartObjects(1).Chart。

     

如果要创建单独的图表工作表,则记录您的代码   可以修改以保留原始工作表作为   图表数据。添加图表工作表时,它将成为活动工作表。

顺便说一句,您可以从选择窗格中检查图表名称

enter image description here enter image description here

答案 2 :(得分:-1)

ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Kraft"
                                               ^^^^^^^^^^