添加水平轴标签 - VBA Excel

时间:2016-03-04 21:11:33

标签: vba excel-vba charts axis-labels excel

我有一个创建图表的宏。我希望VBA从电子表格中读取范围并使用水平轴标签的值。基本上我想制作这张图:

enter image description here

看起来像这样(在底部添加月份)

enter image description here

谢谢!

宏:

Sub AddChartSheet()

   'Variable declaration
   Dim chtChart As Chart
   Dim name1 As String

   'Name is currently used for the title of the new tab where the chart is     created and the chart title
   name1 = "AHU-10-8"

   'Create a new chart.
   Set chtChart = Charts.Add
   With chtChart
  '.Name is the name of the tab where the new Chart is created
  .Name = name1

  .ChartType = xlLine
  'Link to the source data range.
  .SetSourceData Source:=Sheets(3).Range("A1:B5861"), _
     PlotBy:=xlColumns
  .HasTitle = True
  .ChartTitle.Text = name1
  .Axes(xlCategory, xlPrimary).HasTitle = True
  .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time"
  .Axes(xlValue, xlPrimary).HasTitle = True
  .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Valve Position (-)"

  myFileName = name1 & ".png"
  chtChart.Export Filename:=ThisWorkbook.Path & "\" & myFileName, Filtername:="PNG"

   End With
End Sub

3 个答案:

答案 0 :(得分:2)

调整用于日期(水平轴)的数据系列。您可以添加以下内容

ActiveSheet.ChartObjects("Chart 15").Activate
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$D$5:$D$19"

注意:您首先需要选择图表并调整我所需的范围到您需要的范围。

或者你可以添加

.SeriesCollection(1).XValues = "=Sheet1!$D$5:$D$19"

在你的代码之间

.SetSourceData Source:=Sheets(3).Range("A1:B5861"), _
 PlotBy:=xlColumns

.HasTitle = True

答案 1 :(得分:0)

您可以分享您的宏或工作簿吗?

我不确定您的数据设置方式,但您可以将为水平标签选择的数据格式更改为日期格式。或者,在VBA中,您可以将选择更改为“mmmm”的数字格式,以显示月份。

Selection.NumberFormat = "mmmm"

答案 2 :(得分:0)

以下内容应该有效。请记住在以下代码中调整图表名称

ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "mmmm"