macros用特殊的重复处理改变基于单元值的标签名称

我有一个macros,它改变了基于单元格值(A4)的单元格名称,该单元格的值包含一个给出表单唯一名称的公式,但是我想查看是否有可能在存在重复时创build特殊情况处理发生。 所以这是代码:

Sub RenameFromA4() Dim Msg As String, i As Integer For i = 5 To Sheets.Count If Sheets(i).Range("A4").Value = "" Then Msg = "Sheet " & i & "(" & Sheets(i).Name & ") has no value in A4. Fix sheet, then rerun." MsgBox Msg, vbExclamation Exit Sub Else On Error GoTo ErrSheetName Sheets(i).Name = Sheets(i).Range("A4").Value On Error GoTo 0 End If Next i Exit Sub ErrSheetName: Msg = "Sheet " & i & "(" & Sheets(i).Name & ") could not be renamed. Check if name already used." MsgBox Msg, vbExclamation End Sub 

我遇到的麻烦有时候会出现重复,并会将我的整个macros完全停止。 所以我想添加一个序列,当macros遇到一个副本时,在单元格B3中添加下面的公式: ="IF(AND(C4="",D4="",D3="",C3=""),TRIM((MID(A2,FIND(":",A2)+2,20))),"")&IF(IFERROR(FIND("West",A2),0)>0," W","")&" "&TRIM(RIGHT(SUBSTITUTE(A2," ",REPT(" ",255)),255))"

并从错误中select,或者返回重新运行macros。

任何有关我如何不能构build这一点的见解将是有帮助的。

您可以通过使用如下所述的函数明确检查是否存在与B4的值相同的工作表: 检查或检查工作表是否存在 。 然后,您可以在On Error...Sheets(i).Name...之间插入以下内容:

 On Error GoTo ErrSheetName If SheetExists(Sheets(i).Range("A4").Value) Then Sheets(i).Range("B3").Formula = "=IF(AND(C4="",D4="",D3="",C3=""),TRIM((MID(A2,FIND(": ",A2)+2,20))),"")&IF(IFERROR(FIND("West ",A2),0)>0,"W ","")&""&TRIM(RIGHT(SUBSTITUTE(A2,"",REPT("",255)),255))" End If Sheets(i).Name = Sheets(i).Range("A4").Value