我正在研究一个宏,其中的一部分接受用户的输入,询问他/她想重命名工作表。它工作正常,但是如果用户提供的名称已被其他工作表使用,则会遇到运行时错误。我知道为什么会发生错误,但不确定如何警告用户并处理错误。

我的代码如下:

'Change sheet name

Dim sheetname As String

sheetname = InputBox(Prompt:="Enter Model Code (eg 2SV)", _
      Title:="Model Code", Default:="Model Code here")

wsCopyTo.Name = sheetname

最佳答案

有两种方法可以解决此问题。

首先,捕获错误,检查是否有错误,并提出建议,然后将错误捕获恢复为原来的状态

Dim sheetname As String

sheetname = InputBox(Prompt:="Enter Model Code (eg 2SV)", _
      Title:="Model Code", Default:="Model Code here")

On Error Resume next
Err.Clear 'ensure previously unhandled errors do not give a false positive on err.number
wsCopyTo.Name = sheetname
If Err.Number = ?? then 'go back and ask for another name
On Error Goto 0

其次,检查所有当前工作表名称,并查看是否存在匹配项
Dim sheetname As String
Dim sh 'as Sheet

sheetname = InputBox(Prompt:="Enter Model Code (eg 2SV)", _
      Title:="Model Code", Default:="Model Code here")

for each sh in ActiveWorkbook.Sheets
     If lower(sh.name)=lower(sheetname) then
         'Goback and ask for another name
Next

wsCopyTo.Name = sheetname

09-11 17:48