如何为每个特定值生成工作表

我在我的项目中包含了一些代码,我有一些我不明白的东西。 我With循环不起作用。

我的目标是从一个特定的单元格B16 =房子和其他新的工作表创build新的工作表每个细胞包含PRIVATE单词。

例如:当用户点击button时: – 在第一张工作表(名称为MyFirstSheet)之后,用title =值B16创build的一个新工作表 – 为每个单元格值创build的一些其他工作表包含在前一个工作表之后的单词PRIVATE。

所以结果将是MyFirstSheet, House, Test1PRIVATE, Test2PRIVATE ….

 Sub NewSheetFromTemplate() Dim SearchRange As Range, c As Range Dim sht As Worksheet 'New sheet for a specific cell Sheets("TEMPLATE").Copy After:=Sheets("MyFirstSheet") ActiveSheet.Name = Sheets("MyFirstSheet").Range("B16").Value 'New sheet for each cell contains PRIVATE With ThiwWorkbook Set SearchRange = ActiveSheet.Range("B16:D70") For Each c In SearchRange If Right(c.Value, 2) = "PRIVATE" Then Sheets("TEMPLATE").Copy After:=Sheets("MyFirstSheet") Sheets("MyFirstSheet").Name = c.Value End If Next c End With End Sub 

问题是:我的第一个工作表是很好创build(所以我有MyFirstSheet, House,创build),但没有其他工作表为每个单元格包含“私人”的Excel说错误1004,并创build了标题TEMPLATE(2)

如果我正确地理解了这个问题,那么你只需要改变这一行

 If Right(c.Value, 2) = "PRIVATE" Then 

 If UCase(Right(c.Value, 7)) = "PRIVATE" Then 

这是因为单词“private”的长度是7个字符,而不是2个。此外,我使用UCASE来确保如果private用不同的上限写入,它也会find一个匹配。

感谢@Fabrizio和@Ralph的帮助和解释。

我的最终代码:

 Sub NewSheetFromTemplate() Dim SearchRange As Range, c As Range Dim sht As Worksheet 'New sheet for each value contain "PRIVATE" With ThiwWorkbook Sheets(1).Select Set SearchRange = ActiveSheet.Range("A2:C70") For Each c In SearchRange If Right(c.Value, 7) = "PRIVATE" Then Sheets("TEMPLATE").Copy After:=ActiveSheet ActiveSheet.Name = c.Value End If Next c End With 'New sheet for a specific cell: A2 Sheets(1).Select Sheets("TEMPLATE").Copy After:=ActiveSheet ActiveSheet.Name = Sheets(1).Range("A2").Value 'Show OK message Sheets(1).Select MsgBox "OK, all sheets well created. Please fill out next sheet" End Sub