Sub create_category()
Dim cell As Range
Dim wsname As Worksheet
Dim test As Boolean
For Each cell In Sheets("Data").Range("d4", Range("d" & Rows.Count).End(xlUp))
test = False
For Each wsname In ThisWorkbook.Sheets
If wsname.name = cell Then test = True
Next wsname
If test = False Then Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.name = cell
Sheets(cell.name).Range("d3").End(xlDown).Offset(1, 0) = cell
Next cell
Sheets("Data").Select
End Sub
我的代码应该创建额外的工作表,并根据单元格中的数据相应地复制数据。
程序在执行代码时没有问题,直到我在Next cell
之前添加了一行代码,有趣的是,错误被指示为第4行代码For Each cell IN Sheets("Data").Range.....
。
正如你所想象的,我很困惑,特别是考虑到我是一个初学者。
显示的错误为1004
我试过用不同的思维过程在副本上重写它,但我以同样的结果结束。非常感谢帮助
1条答案
按热度按时间o75abkj41#
当你写的时候
VBA将尝试在您的工作表“Data”上创建一个Range。Range的起点是单元格D4。对于Range的终点,您可以写入
Range("d" & Rows.Count).End(xlUp)
,但您没有告诉VBA要从哪个工作表访问此单元格。虽然这对您来说似乎很明显,但它不是VBA。它将从活动工作表读取单元格,并且这将导致显示1004的无效范围定义。**每次 * 访问
Range
或Cells
时,始终指定要在哪个工作表上工作。我会建议使用中间变量,使其更容易调试。注意
Range
和Rows
前面的点(.
)。更新您下面的代码也有问题,将循环改为
并添加以下函数
但我不太清楚其中的逻辑:当前代码将把工作表的名称(单元格.值)写入工作表--我怀疑这是你想要的。