【发布时间】:2017-03-06 05:54:34
【问题描述】:
我有一个工作簿,其中包含工作表,工作表名称中包含“benefits”文本。例如;医疗福利或牙科福利。总会有至少一个,但也可能有几个。
我正在尝试编写一个宏,该宏将在工作表名称中找到带有文本“benefits”的工作表,并且在第 40 行中至少有一个单词 TRUE 的实例。
当满足这两个条件时,我需要使用相同的工作表名称创建一个新工作表,但将文本“Benefits”替换为文本“Final”,换句话说;如果工作表 MEDICALBenefits 在第 40 行的一个或多个单元格中为 TRUE,则将创建一个名为 MEDICALFinal 的新工作表。
同样,如果工作表 DENTALBenefits 在第 40 行的一个或多个单元格中为 TRUE,则将创建一个名为 DENTALFinal 的新工作表。
然后我需要它遍历所有工作表,在名称中查找“Benefits”并在第 40 行查找 TRUE,然后创建一个新工作表。
这是我目前拥有的代码,但需要帮助命名新工作表。
约旦
'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
【问题讨论】: