我编辑了一个图表,并在执行此操作时捕获了一个宏。然后我想将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"
我希望有人可以提供帮助。
答案 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。
如果要创建单独的图表工作表,则记录您的代码 可以修改以保留原始工作表作为 图表数据。添加图表工作表时,它将成为活动工作表。
顺便说一句,您可以从选择窗格中检查图表名称
答案 2 :(得分:-1)
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Kraft"
^^^^^^^^^^