问题描述
我创建了一个Excel 2016 VBA散点图(没有图例的单独工作表),并用VBA标记了这些点。源标签为A1:A3(事件(35个字符)/日期/ Y点),数据为A2:C17。我的标签(方向-90)覆盖了Y点并聚在一起,因为Y轴图区域占据了整个工作表。我尝试了不同的Y轴值,但绘图区域扩展为填充工作表。我还尝试使用VBA更改地块大小。我需要实际图表上方的标签。
第二个问题是我无法绘制日期和时间,只能绘制日期,并且在创建带有xlMinusValues 100%和SeriesCollection(1)的错误栏时遇到问题。
为了易于使用,我一直在单独的模块中执行此操作,但是将组合或使用Call。我发现我不能用超过16条数据记录来构建图表,因此如果存在更多记录,我将在循环例程中进行工作。
时间轴模块
Option Explicit
Sub Timeline()
Dim sCount As Long
Dim labelrotation As Long
Dim TimelineChart As Chart
Dim LastCell As Long
Dim rng As Range
Dim rngAddr As String
Dim ChartRange As String
With ActiveSheet
Range("C1").End(xlDown).Activate
Set rng = ActiveCell
rngAddr = rng.Address(0,0)
End With
Let ChartRange = "B2:" & rngAddr
Set TimelineChart = Charts.Add
TimelineChart.Name = "TimelineChart"
With TimelineChart
.SetSourceData Sheets("TimelineData").Range(ChartRange)
.ChartType = xlXYScatter
.Legend.LegendEntries(1).Delete
TimelineChart.HasAxis(xlSecondary) = False
End With
End Sub
标签模块
Option Explicit
Sub Labels()
Dim r As Range
Dim Events As Range
Dim EventCounter As Integer
Dim s As Series
Sheets("TimelineData").Select
Set Events = Range("A2",Range("A1").End(xlDown))
Set s = Chart1.SeriesCollection(1)
s.HasDataLabels = True
For Each r In Events
EventCounter = EventCounter + 1
s.Points(EventCounter).DataLabel.Text = r.Value
s.Points(EventCounter).DataLabel.Position = xlLabelPositionAbove
s.Points(EventCounter).DataLabel.Orientation = 45
Next r
End Sub
解决方法
我将撤回该问题。散点图在图表表上,而在与使用数据表的表相同的工作表中。结论很多,我应该使用条形图,相同的工作表进行修改。
感谢所有看过并认为是回应的人。