0
我編譯了以下宏以在Excel工作表的右側創建3個圖表。VBA Excel在圖表上設置水平軸
Sub CreateChart()
Dim objChart As ChartObject
Dim myChtRange As Range
Dim myDataRange As Range
With ActiveSheet
Set myChtRange = Range("M10:Q23")
' What range contains data for chart
Set myDataRange = ActiveSheet.ListObjects("Table2").Range
' Cover chart range with chart
Set objChart = .ChartObjects.Add(_
Left:=myChtRange.Left, Top:=myChtRange.Top, _
Width:=myChtRange.Width, Height:=myChtRange.Height)
' Put all the right stuff in the chart
With objChart.Chart
.ChartArea.AutoScaleFont = False
.ChartType = xlLine
.ChartStyle = 245
.SetSourceData Source:=myDataRange
.HasTitle = True
.HasLegend = False
.ChartTitle.Characters.Text = "PO By Year"
.ChartTitle.Font.Bold = True
.ChartTitle.Font.Size = 12
With .Axes(xlCategory, xlPrimary)
.HasTitle = True
With .AxisTitle
.Characters.Text = "Year"
.Font.Size = 10
.Font.Bold = True
End With
End With
With .Axes(xlValue, xlPrimary)
.HasTitle = True
.DisplayUnit = xlMillions
.HasDisplayUnitLabel = False
With .AxisTitle
.Characters.Text = "Millions"
.Font.Size = 10
.Font.Bold = True
End With
End With
End With
Set myChtRange = Range("S10:W23")
' What range contains data for chart
Set myDataRange = ActiveSheet.ListObjects("Table17").ListColumns(5).Range
' Cover chart range with chart
Set objChart = .ChartObjects.Add(_
Left:=myChtRange.Left, Top:=myChtRange.Top, _
Width:=myChtRange.Width, Height:=myChtRange.Height)
' Put all the right stuff in the chart
With objChart.Chart
.ChartArea.AutoScaleFont = False
.ChartType = xlLine
.ChartStyle = 245
.SetSourceData Source:=myDataRange
.HasTitle = True
.HasLegend = False
.ChartTitle.Characters.Text = "Invoices By Year"
.ChartTitle.Font.Bold = True
.ChartTitle.Font.Size = 12
With .Axes(xlCategory, xlPrimary)
.HasTitle = True
With .AxisTitle
.Characters.Text = "Years"
.Font.Size = 10
.Font.Bold = True
End With
End With
With .Axes(xlValue, xlPrimary)
.HasTitle = True
.DisplayUnit = xlMillions
.HasDisplayUnitLabel = False
With .AxisTitle
.Characters.Text = "Millions"
.Font.Size = 10
.Font.Bold = True
End With
End With
End With
Set myChtRange = Range("Y10:AC23")
' What range contains data for chart
Set myDataRange = ActiveSheet.ListObjects("Table30").ListColumns(5).Range
' Cover chart range with chart
Set objChart = .ChartObjects.Add(_
Left:=myChtRange.Left, Top:=myChtRange.Top, _
Width:=myChtRange.Width, Height:=myChtRange.Height)
' Put all the right stuff in the chart
With objChart.Chart
.ChartArea.AutoScaleFont = False
.ChartType = xlLine
.ChartStyle = 245
.SetSourceData Source:=myDataRange
.HasTitle = True
.HasLegend = False
.ChartTitle.Characters.Text = "Req to PO"
.ChartTitle.Font.Bold = True
.ChartTitle.Font.Size = 12
With .Axes(xlCategory, xlPrimary)
.HasTitle = True
With .AxisTitle
.Characters.Text = "Time"
.Font.Size = 10
.Font.Bold = True
End With
End With
With .Axes(xlValue, xlPrimary)
.HasTitle = True
.DisplayUnit = xlMillions
.HasDisplayUnitLabel = False
With .AxisTitle
.Characters.Text = "Days"
.Font.Size = 10
.Font.Bold = True
End With
End With
End With
End With
End Sub
我引用的第一個圖表表如下所示:
的問題是我不能確定如何獲得在橫軸上顯示的年份而不是點1,2,3,4 ....
我是否需要引用整個表格,正如我爲表2所做的那樣,還是需要參考第5列,如我對錶17所做的操作?
宏記錄器沒有顯示從圖示圖表到水平軸上年份的圖表的步驟。
隨着範圍objChart.Chart ........ .SeriesCollection(1).XValues = ActiveSheet.ListObjects(「Table2」).ListColumns(2).Range –