Board logo

标题: [问题求助] [已解决]VBS为什么用after:=这个写法系统一直会报错缺少) [打印本页]

作者: TTTJJJ    时间: 2023-8-7 15:36     标题: [已解决]VBS为什么用after:=这个写法系统一直会报错缺少)

Dim ExcelApp,objWorkbook
Set ExcelApp = CreateObject("Excel.Application")
Set objWorkbook = ExcelApp.Workbooks.Open("C:\Users\Desktop\1.xlsx")
Dim newSheet1
Set newSheet1 = objWorkbook.Worksheets.Add(after:= objWorkbook.Worksheets(objWorkbook.Worksheets.Count))
newSheet1.Name = "NewSheet 1"
objWorkbook.Save
objWorkbook.Close
ExcelApp.Quit
Set newSheet1 = Nothing
Set objWorkbook = Nothing
Set ExcelApp = Nothing
msgbox "OK"
不知道为什么after:=一直报错,明明()都不缺的
copy6楼的可解决
作者: jyswjjgdwtdtj    时间: 2023-8-7 16:31

本帖最后由 jyswjjgdwtdtj 于 2023-8-7 16:37 编辑

vb里也没这用法吧 起码vbs没有after:这玩意
你从哪里学来的? 你要达成什么目的?
如果你要搞什么像c++里那种+=在vb里有个什么rset lset vbs里就老老实实的a=a+"a"
网上没有你这奇怪用法 任何语言似乎都没有
作者: TTTJJJ    时间: 2023-8-7 17:05

回复 2# jyswjjgdwtdtj
就是想在在excel已有的工作表的基础上再增加几个工作表
作者: czjt1234    时间: 2023-8-7 17:32

不支持啊,只能用
,,,,,参数,,
这样子
作者: Five66    时间: 2023-8-7 17:50

额,看到:=,第一反应是py的海象运算符
作者: czjt1234    时间: 2023-8-7 18:23

Set newSheet1 = objWorkbook.Worksheets.Add(,,1)
测试成功
作者: TTTJJJ    时间: 2023-8-7 19:02

回复 6# czjt1234


   成功了大侠,不过这个只能在已有的工作表后面添加工作表,如何在已有工作表的前面添加工作表啊?
作者: TTTJJJ    时间: 2023-8-7 19:02

回复 4# czjt1234
2个逗号,下面有大侠写出来了,试过了可以用,但是5个逗号一运行就报错
作者: TTTJJJ    时间: 2023-8-7 19:22

回复 1# TTTJJJ
objWorkbook.Worksheets("Sheet1").Move objWorkbook.Worksheets(3) 这段语句可以移动工作表的位置但是不是插入的方式,然后有个奇怪的地方,当sheet1在第一个工作表的时候Worksheets(X)里的X需要填写3才能移动到实际工作表2的位置;当sheet1在第2个工作表的时候Worksheets(X)里的X正常填写就能移动到实际工作表的位置,不知道啥原因,有木有大佬讲解下 :'(
作者: TTTJJJ    时间: 2023-8-7 19:44

回复 2# jyswjjgdwtdtj
Worksheets.Add(Before:=objWorkbook.Worksheets(1), After:=objWorkbook.Worksheets(3))
逗号就是省略before的意思,但是不知道为什么以这么用就会报错,但是用逗号表示反而就成功了
作者: Five66    时间: 2023-8-7 21:05

Worksheets.Add方法有四个参数,逗号是表示参数为空
before跟after是代指,代指之前跟之后的sheet,不是语句代码的一部分
建议参考下面链接
https://learn.microsoft.com/zh-c ... xcel.worksheets.add
作者: jyswjjgdwtdtj    时间: 2023-8-8 14:55

本帖最后由 jyswjjgdwtdtj 于 2023-8-8 17:05 编辑

回复 10# TTTJJJ

vbs有这么高级的东西?
话说你这能用?
  1. function a(b,c,d)
  2. msgbox d
  3. end function
  4. b=a(before:=1,after:=2)
复制代码
我试了下也不对啊

哦哦哦 我知道了 你是要按名称传递参数是吧 这东西c#都没有 就vb非常神奇地按上了
vbs肯定没有

这个add函数格式不是(before,after,……)啊 何必要这么搞嘞
作者: 老刘1号    时间: 2023-8-8 21:56

回复 2# jyswjjgdwtdtj


    这个是vba, vb for application
是微软家office的宏用的语言
作者: jyswjjgdwtdtj    时间: 2023-8-9 17:58

回复 13# 老刘1号


   嗯嗯 我知道了 这是vb里非常先进的用用形参名来传递参数的用法




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2