Excel- vba-为宏生成的图表预设图表轴标签

时间:2014-04-14 00:39:25

标签: excel-vba graph vba excel

我有问题。让我们说,为简单起见,我正在重复处理一个简单的两列数据,输出是一个绘图,所以我记录了一个宏。但问题是我想按照我的意愿在图表上设置轴标签,因为它们具有(相同的)具体名称,每次运行宏。但是vba宏代码不记录有关 X Y 轴之间差异的任何信息,结果是,一个轴标签被覆盖,或者,宏生成的图表中有两个相同的轴标签。我添加:代码示例(在代码中,我删除了所有不必要的数据,等等,以防止宏下次运行)。 我想要的是什么(我为这种粗鲁的表述道歉,但我只是想严格说明,我的想法是什么):我想有一个解决方案,这样,每次运行宏时,我都有不同的图表,但是具有相同的轴标签名称,即X轴:U [V]和Y轴:I [A]

代码:

ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.ApplyLayout (1)
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""I-V char"""
ActiveChart.SeriesCollection(1).XValues = "=hviezd1!$D$2:$D$193"
ActiveChart.SeriesCollection(1).Values = "=hviezd1!$E$2:$E$193"
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "I [A]"
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "U [V]"

我尝试通过不同的方式记录宏,例如通过excel中的工具栏(通过此方式更多),通过键盘,但没有记录的代码包含任何可以区分X轴和Y轴的信息。 / p>

我正在使用2007 excel(正如我之前在其他问题中读到的那样,2007 excel图表宏记录器很差而且问题,我说的可能是由此导致的),但我正在寻找任何可以帮助解决我的问题的好答案。谢谢你的回答。

2 个答案:

答案 0 :(得分:3)

这是一个用于绘制条形图的漂亮VBA脚本。您需要更改单元格值以使其适合您。对我而言,它运作良好。这是对我学习VBA(不是专家级)的所有网络用户表示感谢....

Sub yourMethodName()

Dim myChart As Chart, cht As ChartObject
Dim rngChart As Range, desinationSheet As String
destinationSheet = ActiveSheet.Name
Set myChart = Charts.Add
Set myChart = myChart.Location(Where:=xlLocationAsObject, Name:=destinationSheet)
myChart.SetSourceData Source:=Range("D37:E38").CurrentRegion, PlotBy:=xlColumns
myChart.ChartType = xlColumnClustered
ActiveSheet.ChartObjects(1).Activate
Set cht = ActiveChart.Parent
'Y-axis value is set up below
cht.Chart.Axes(xlValue).MinimumScale = 1
cht.Chart.Axes(xlValue).MaximumScale = 1
' X axis and Y axiz titles
With cht
'X axis title
cht.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
cht.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "All CRs"
 'y-axis title
cht.Chart.Axes(xlValue, xlPrimary).HasTitle = True
cht.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "% Complete"
End With

'Chart area is set up below
Set rngChart = Range("B12:G33")
cht.Left = rngChart.Left
cht.Top = rngChart.Top
cht.Width = rngChart.Width
cht.Height = rngChart.Height
Range("A37").Select

End Sub

答案 1 :(得分:0)

您可以使用:

With ActiveChart 

 'X axis name
.Axes(xlCategory, xlPrimary).HasTitle = True 
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X-Axis" 
 'y-axis name
.Axes(xlValue, xlPrimary).HasTitle = True 
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y-Axis" 
End With