0

我已经编写了 vbscript 代码以在 excel 的第 1 页中添加图表,其来源来自同一 excel 的其他工作表,名称为“CL.1.1”,但我收到上述错误,任何人都可以帮助我在下面的代码中出现问题.

Sub DispvsTime(Shname)
    Sheets("Sheet1").Select
    noofsheets = ActiveSheet.ChartObjects.Count
    If noofsheets > 0 Then
       ActiveSheet.ChartObjects.Select
       ActiveSheet.ChartObjects.Delete
    End If
    Sheets("Sheet1").Pictures.Visible = False
    ActiveSheet.Shapes.AddChart(1000, 420, 50, 500).Select
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
    ActiveChart.SetSourceData Source:=Sheets(Shname).Range("G2:H2001")
    ActiveChart.SetElement (msoElementChartTitleAboveChart)
    ActiveChart.ChartTitle.Text = "Displacement VS Time"
End Sub

这里shname是选取数据的工作表的名称。

任何人都可以帮助我找出代码中的错误以获取此错误吗?

4

2 回答 2

0

如果您的代码确实是您所说的 VBScript,而不是看起来的 VBA,那么有几个问题:

  • 与 VBA 不同,您不能像ActiveSheetActiveChart直接在 VBScript 中使用对象。您需要对这些对象的引用,通常是应用程序对象:

    Set xl = CreateObject("Excel.Application")
    xl.ActiveSheet.Name = "foo"
    
  • VBScript 不知道诸如xlXYScatterSmoothNoMarkersor之类的 Excel/Office 常量msoElementChartTitleAboveChart,因此您必须使用文字值或自己定义这些常量:

    Const xlXYScatterSmoothNoMarkers = 73
    
  • 您不能像Source:=...在 VBScript 中那样使用命名参数:

    xl.ActiveChart.SetSourceData xl.Sheets(Shname).Range("G2:H2001")
    

有关VBA 和 VBScript 之间差异的更详细说明,请参见此处。

于 2013-05-20T13:20:08.623 回答
0

如果工作表名称是 Shname 则将其放在引号中,如果它是包含工作表名称的变量名,则忽略此帖子:P

Sheets("Shname")
于 2013-05-20T13:05:06.037 回答