我有一些非常简单的代码,可以在Excel文档中添加一个新工作表,并将其名称更改为在用户窗体上输入的名称,添加在当前工作表之后。在新工作簿上运行得很好,但是在具有多个现有工作表的工作簿中,它会创建新工作表,但不会将其重命名。
这只会在第一次运行此代码时发生,下一次它会正常运行。让事情变得更奇怪的是,如果您打开VBA编辑器尝试进行调试,那么它也会正常运行。这显然使查找错误变得相当困难。
我使用的代码在此处:
Dim WS As Worksheet
Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
WS.name = txtSheetName.value
很简单。我想知道这个问题是否是因为它在正确创建之前尝试重命名工作表?有没有更好的方法来编写这段代码?
更新: 我已经开始使用消息框进行调试,因为打开调试器会使问题停止,而且似乎它只会在处理代码的一半时停止:
Dim WS As Worksheet
MsgBox (WS Is Nothing)
Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
'***** Nothing after this point gets processed *******
MsgBox (WS Is Nothing)
MsgBox WS.name
WS.name = txtSheetName.value
MsgBox WS.name
Worksheets
集合而不是Sheets
,或者先将txtSheetName.value
赋值给一个字符串变量。 - GSergSheets.Add After:=Sheets(Worksheets.Count)
,然后设置ActiveSheet.Name
。您是否收到相同的错误? - David Zemens