2012-12-10 168 views
6

我期待创建散点图是,按下按钮,在 Sheet 1创建散点图和使用 A2:A11作为 x值和 B2:B11y值。 Excel的VBA:添加散点图到工作表对象

在底部使用代码允许我创建一个基于 A1:B3(从 here得到这个值)的散点图。它接近,但不完全是我要找的。我如何调整这个以适应我的需求?

基于我想要的值,我现在已经设置好了图表,所以根据我想要的值创建了图表,但我无法在Sheet 1中看到它作为对象出现。我该怎么做呢? .Location xlLocationAsObject似乎不起作用。

Private Sub chartButton_Click() 
    ActiveWorkbook.Charts.Add 
    With ActiveWorkbook.ActiveChart 
     'Data? 
     .ChartType = xlXYScatter 
     .SeriesCollection.NewSeries 
     .SeriesCollection(1).Name = "=""Scatter Chart""" 
     .SeriesCollection(1).XValues = "=Sheet1!$A$2:$A$11" 
     .SeriesCollection(1).Values = "=Sheet1!$B$2:$B$11" 

     'Location 
     'DON'T KNOW WHAT TO PUT HERE 
     '.location xlLocationAsObject doesn't work! 

     'Titles 
     .HasTitle = True 
     .ChartTitle.Characters.Text = "Scatter Chart" 
     .Axes(xlCategory, xlPrimary).HasTitle = True 
     .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X values" 
     .Axes(xlValue, xlPrimary).HasTitle = True 
     .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y values" 
     .Axes(xlCategory).HasMajorGridlines = True 

     'Formatting 
     .Axes(xlCategory).HasMinorGridlines = False 
     .Axes(xlValue).HasMajorGridlines = True 
     .Axes(xlValue).HasMinorGridlines = False 
     .HasLegend = False 

    End With 
End Sub 

回答

8

书面你的代码添加了一个图表作为Chart Sheet,而不是作为一个Worksheet

图表试试这个:

更换

ActiveWorkbook.Charts.Add 
With ActiveWorkbook.ActiveChart 

Dim sh As Worksheet 
Dim chrt As Chart 

Set sh = ActiveWorkbook.Worksheets("Sheet1") 
Set chrt = sh.Shapes.AddChart.Chart 
With chrt 

然后你就可以控制它的位置和大小与

.ChartArea.Left 
    .ChartArea.Top 
    .ChartArea.Height 
    .ChartArea.Width 
0

当您使用Chart.Location,你需要指定位置:

.Location Where:=xlLocationAsObject, Name:="Sheet1"