创build新的工作表

我有一个工作簿,其中将包含工作表与工作表名称中的文字“好处”。 例如; 医疗福利或牙科福利。 总会有至less一个,但可能会有几个。

我正在尝试编写一个macros,它将在工作表名称中find带有“好处”的工作表,并在第40行中至lessfind一个TRUE字样的实例。

当满足这两个条件时,我需要使用相同的工作表名称创build一个新的工作表,但是用文本“Final”replace文本“Benefits”,换句话说, 如果工作表MEDICALBenefits在第40行的一个或多个单元格中为TRUE,则将创build一个名为MEDICALFinal的新工作表。

同样,如果工作表DENTALBenefits在行40中的一个或多个单元格中为TRUE,则会创build一个名为DENTALFinal的新工作表。

然后,我需要循环查看名称中的“Benefits”和第40行中的TRUE的所有工作表,并创build一个新工作表。

这是我到目前为止的代码,但需要帮助命名新的工作表。

约旦

'Look for worksheet names *benefits* with checkbox(s) = true Sub CreateFinalWorksheet() Dim sh As Worksheet Dim iVal As Integer Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Sheets iVal = Application.WorksheetFunction.CountIf(Range("40:40"), "TRUE") If (LCase$(sh.Name) Like "*benefits*") And (iVal > 0) Then Call AddWorksheet Next sh Application.ScreenUpdating = True End Sub 'Called from CreateFinalWorksheet. 'Add worksheet with same sheet name replacing *benefits* with *final* Sub AddWorksheet() Dim sh As Worksheet With ThisWorkbook Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count)) ws.Name = "MedicalFinal" End With End Sub 

OPs澄清后编辑 ,他希望find所有“*好处”表

 iVal = Application.WorksheetFunction.CountIf(Range("40:40"), "TRUE") 

你缺less当前的工作表参考,所以你想写如下:

 iVal = Application.WorksheetFunction.CountIf(sh.Range("40:40"), "TRUE") 

对于上面和你的主要问题,我会走像:

 Sub CreateFinalWorksheet() Dim sh As Worksheet Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Sheets If (LCase$(sh.Name) Like "*benefits") Then If WorksheetFunction.CountIf(sh.Rows(40), "TRUE") = 0 Then AddWorksheet sh.Name End If Next sh Application.ScreenUpdating = True End Sub Sub AddWorksheet(shtName As String) Dim sh As Worksheet With ThisWorkbook .Sheets.Add(After:=.Sheets(.Sheets.count)).Name = Replace(LCase$(shtName), "benefits", "Final") End With End Sub 

添加一个参数到你的AddWorksheet例程,让它成为“好处”工作表

 If (LCase$(sh.Name) Like "*benefits*") And (iVal > 0) Then AddWorksheet sh Sub AddWorksheet(benef as worksheet) .... ws.name = Replace(benef.name, "benefits", "Final", , vbTextCompare) 

最后,你也可以在这个子内部做其他的事情,比如从参数工作表的benef复制一些数据。