请问以下VBA代码标黄语句哪里有问题,导致运行的时候出错了😭?

请问标黄语句哪里有问题,导致运行的时候出错了😭
另外,第一次只是单独跑A列数据的时候,也只是读取了文件夹的第一个工作簿,然后其它工作簿的数据都没有被抓取😭
请问哪里出了问题呢

标黄语句有两个问题:
一、Range里面的Cells需要添加workbook、worksheet的限制,否则会因为跨表导致报错
二、直接这样的赋值不会产生任何效果,想要复制区域的值,应该在等号的左右都加上.Value
综上所述,语句修改为:
ThisWorkBook.Sheets("Total").Cells(k+1,1).Resize(1,9).Value = WB.Sheets("UPDATE").Cells(k,1).ReSize(1,9).Value追问

您好我还想请问一下,运行之后只抓取了文件夹里第一个工作簿的数据其它的工作簿的数据都没抓是因为哪里写错了呢😹

追答

你按F8调试看看呢,我其实不明白为什么会抓取一个,我理解应该一个都不抓,第一个DIR应该修改为:
FS = DIR(MYP & "*.XLS?")

追问

蟹蟹!好像可以了!(但是为什么呢😹)

追答

用鼠标点DIR、按F1查看系统的说明就知道,DIR的参数是通配符,不是文件夹

追问

哦哦这样子,谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-12
目标工作表.Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(1,9)=源工作表.……
你的结果不是只复制了第一个,而是后面的文件将前面的复制结果覆盖掉了。
第2个回答  2021-11-13
k=2应该在第一个do语句的前边。。。否则每个文件打开是不是都重复从第2行开始循环了吗?追问

为什么呀😹我其实就是想从文件夹中的每个工作簿中的工作表“UPDATE”的第二行开始提取数据

追答

按你的代码思路,k=2时初始化复制(结果)表格的行号的,另外需要有一个变量表示打开(原始)表格的行号k0=2,这样才能完整表示你需要的每个表从K0行读取数据,然后复制到结果表格里的k行处。

追问

好像有点懂了!谢谢😺

本回答被网友采纳
第3个回答  2021-11-11
Range里不是当a2这种形式吗,你那里怎么都是cells的值?除非你cells里设定的是列名和行值,不然没啥意义吧,就是取值这俩用一个就行,为啥用俩套用?
相似回答