先说你代码可能出现问题的地方,可能是.pastespecial xlpastevalues这里错了,把括号去掉看看。
另外我点评和指导一下,就不给你详细写你的具体要求了
1、多个SHEET处理的话,最好SET成独立的对象,这样不容易出错,而且除非你是使用select这个方法,否则都不需要先用SELECT或者ACTIVE来切换工作表后再处理数据,例如
DIM WsA as worksheet, WsB as worksheet
with Thisworkbook
set WsA = .sheets("采购录入")
set WsB = .sheets("采购明细表")
end with
2、超级表非常好用,但不是像你这样用,要把它SET成ListObject对象,然后需要学会怎么写入数据,例如
dim ListObj as Listobject
wsa.range("C4:N4").copy
set listobj = wsa.listobjects("超级表名字")
‘超级表在哪行哪列根本不需要管,只需要你定好了表的字段名字就可以直接引用,假设超级表第一个字段叫字段1
listobj.ListColumns("字段1").range.rows(2).pastespecial xlpastevalues
'Listobject的表后如果没写入过数据的话,DataBodyRange是nothing的状态,所以需要用ListColumns("字段1").range.rows(2)才能写入数据(这里面的ROWS数字不管你这个超级表是在第几行开始,只要是字段名行的下一行都是2,如此类推),如果是已经写入过数据的话,则可以使用DataBodyRange.rows(1)来写入(如果是要在DataBodyRange范围的外的下一行写入数据,则可以先用.ListColumns("BUKRS").DataBodyRange.Rows.Count取得最后的数据行数,然后用.ListColumns("BUKRS").DataBodyRange.Rows(N+1)的方法写入
虽然listobject写起数据来可以完全无视表所在的行列位置,但写法会比较复杂,所以最好学会运用好with 来减少代码量,也可以使用ListColumn来定义需要高频使用的字段。
另外我点评和指导一下,就不给你详细写你的具体要求了
1、多个SHEET处理的话,最好SET成独立的对象,这样不容易出错,而且除非你是使用select这个方法,否则都不需要先用SELECT或者ACTIVE来切换工作表后再处理数据,例如
DIM WsA as worksheet, WsB as worksheet
with Thisworkbook
set WsA = .sheets("采购录入")
set WsB = .sheets("采购明细表")
end with
2、超级表非常好用,但不是像你这样用,要把它SET成ListObject对象,然后需要学会怎么写入数据,例如
dim ListObj as Listobject
wsa.range("C4:N4").copy
set listobj = wsa.listobjects("超级表名字")
‘超级表在哪行哪列根本不需要管,只需要你定好了表的字段名字就可以直接引用,假设超级表第一个字段叫字段1
listobj.ListColumns("字段1").range.rows(2).pastespecial xlpastevalues
'Listobject的表后如果没写入过数据的话,DataBodyRange是nothing的状态,所以需要用ListColumns("字段1").range.rows(2)才能写入数据(这里面的ROWS数字不管你这个超级表是在第几行开始,只要是字段名行的下一行都是2,如此类推),如果是已经写入过数据的话,则可以使用DataBodyRange.rows(1)来写入(如果是要在DataBodyRange范围的外的下一行写入数据,则可以先用.ListColumns("BUKRS").DataBodyRange.Rows.Count取得最后的数据行数,然后用.ListColumns("BUKRS").DataBodyRange.Rows(N+1)的方法写入
虽然listobject写起数据来可以完全无视表所在的行列位置,但写法会比较复杂,所以最好学会运用好with 来减少代码量,也可以使用ListColumn来定义需要高频使用的字段。