散点图绘制excel VBA – 不会绘制我的数据范围

以下是代码中给我带来麻烦的部分。 我join了messagebox,让我知道事情正在达到这个给定的点。 所以当我input“MsgBox xaxis.Address()”,它就像$ C $ 20:$ C $ 42一样出来。 这是我正在寻找在X轴上的图表。 问题是,我的graphics实际上并没有在x轴上显示出来……它像整个图表一样。 我猜我的问题在于我正在使用的xaxis的语法。

Dim StartTime As Range Dim EndTime As Range Set StartTime = wb1.Sheets("Sheet2").Range("C:C").Find(wb1.Sheets("Sheet1").Range("$B$2").Text, MatchCase:=False, lookat:=xlWhole) Set EndTime = wb1.Sheets("Sheet2").Range("C:C").Find(wb1.Sheets("Sheet1").Range("B3").Text, MatchCase:=False, lookat:=xlWhole) 'If Not StartTime Is Nothing Then 'End If MsgBox StartTime.Address() MsgBox EndTime.Address() MsgBox StartTime.Value MsgBox EndTime.Value MsgBox "Hi" Dim xaxis As Range Dim yaxis As Range Set xaxis = Range(StartTime.Address & ":" & EndTime.Address) MsgBox xaxis.Address 'Set xaxis = Range("$C$16", Range("$C$16").End(xlDown)) Set yaxis = xaxis.Offset(0, ColumnOffset:=1) MsgBox yaxis.Address ''''''''''''''''''''''' 'Dim x As String 'Dim y As String ' x = xaxis.Address 'MsgBox "Hi" 'y = yaxis.Address 'MsgBox x Set Chrt = Charts.Add With Chrt .ChartType = xlXYScatter .SeriesCollection.NewSeries '.SeriesCollection(1).Name = "=""Scatter Chart""" .SeriesCollection(1).Values = yaxis .SeriesCollection(1).XValues = xaxis 'Titles .HasTitle = True .ChartTitle.Characters.Text = "Platen1" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Seconds)" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Temp (Deg. C)" .Axes(xlCategory).HasMajorGridlines = True 'Formatting .Axes(xlCategory).HasMinorGridlines = False .Axes(xlValue).HasMajorGridlines = True .Axes(xlValue).HasMinorGridlines = False .HasLegend = False End With 

我的总体目标是:我有一个每天更新数据的电子表格。 我需要用户能够input开始时间,结束时间,然后input机器编号。 这需要用来从这些数据生成图表。 开始和结束时间总是在列C中,但特定的行总是在变化。 所以我所做的是从数据中find匹配的开始时间和结束时间,然后创build这个范围(StartTime或EndTime)。 机器将确定用于y轴的数据列,这些数据只是从x轴偏移。

任何帮助将不胜感激。

编辑:我通过在图表创build下添加以下代码来修复上述问题:

  Do Until .SeriesCollection.Count = 0 .SeriesCollection(1).Delete Loop 

我认识到的问题是,“xaxis”和“yaxis”从Sheet1抓取数据,而我希望它从Sheet 2抓取数据。我该如何去声明它应该从Sheet2绘制graphics?

像这样做

  Set xaxis = Sheets("Sheet2").Range(StartTime.Address & ":" & EndTime.Address) Set yaxis = xaxis.Offset(0, ColumnOffset:=1)