使用Sheets.Add,使用After参数错误,“预期语句”

时间:2016-08-09 00:40:50

标签: excel excel-vba vbscript vba

我正在尝试将工作表添加到现有工作簿中,将新工作表放在先前的工作表之后。我可以使用Sheets.Add成功添加,但只要我尝试使用After参数,我就会收到错误,指出“预期声明”。看起来VBS不喜欢我的:=运营商。

使用Excel宏编辑器,似乎这应该有效:

Sheets.Add After:=ActiveSheet

或者这个:

Sheets("Sheet1").Move After:=Sheets(4)

无论哪种方式,我都会遇到Expected Statement错误。我试过各种在线示例,似乎无法找到合适的语法。 FWIW,这是在Windows 10上运行的Office 16的新安装。

3 个答案:

答案 0 :(得分:2)

"按名称传递参数" VBScript语法不支持。您将需要使用"按位置传递参数"代替。 e.g。

Sheets.Add Null, ActiveSheet
Sheets("Sheet1").Move , Sheets(4)

价:
https://msdn.microsoft.com/en-us/library/office/ff838966.aspx
https://msdn.microsoft.com/en-us/library/office/ff834742.aspx

答案 1 :(得分:0)

使用下面的代码,最好将wb设置为工作簿的名称,以及工作表的名称。

Sub AddSheet()

Dim wb As Workbook
Dim sht As Worksheet

'better to use this reference to wb object >> modify to your Workbook name
Set wb = Workbooks("Book1.xlsm")

'better to use this reference to sht object >> modify to your Sheet name
Set sht = wb.Sheets("Sheet2")

wb.Sheets.Add After:=wb.Sheets(sht.Index)

End Sub

答案 2 :(得分:0)

您的问题出现有两个原因:

a)因为您尝试使用属于您创建的Excel应用程序对象(xlApp)的对象,而没有告诉VBScript它们是什么,以及

b)因为VBScript不支持"命名参数" (至少,据我所知它没有)所以你必须使用位置参数。

所以只说Sheets与说xlApp.Sheets完全不同,After:=语法不是有效的VBScript代码。

以下代码适用于我:

Set xlApp=CreateObject("Excel.Application")
Set wb=xlApp.Workbooks.Add
xlApp.Sheets.Add.Name="Test1"
xlApp.Sheets.Add.Name="Test2"
xlApp.Sheets.Add , xlApp.ActiveSheet
xlApp.Sheets.Add , xlApp.Sheets("Test1")
wb.SaveAs "TestWorkbook.xlsx"
wb.Close False 

(我的第一个VBScript应用程序 - 哇哇!!)

相关问题