在Excel VBA中创建和命名工作表

Sam*_*gan 31 excel vba excel-vba

我有一些非常简单的代码,在当前工作表之后将新工作表添加到Excel文档,然后将其名称更改为在userform上的文本框中输入的名称.在新工作簿上正常工作,但是在具有许多现有工作表的工作簿中,它会创建新工作表,但不会重命名它.

这只会在您第一次运行此代码时发生,下次运行正常.让它更奇怪的是,如果你打开VBA编辑器尝试调试它,那么它也运行良好.这显然使得发现错误非常困难.

我正在使用的代码在这里:

     Dim WS As Worksheet

     Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
     WS.name = txtSheetName.value
Run Code Online (Sandbox Code Playgroud)

很简单.我想知道这个问题是否正在尝试在正确创建之前重命名工作表?有没有更好的方法来编写这段代码?

更新: 我已经开始使用msgboxes调试它,因为打开调试器会使问题停止,并且它似乎只是中途处理代码:

  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
Run Code Online (Sandbox Code Playgroud)

Sag*_*age 39

http://www.mrexcel.com/td0097.html

Dim WS as Worksheet
Set WS = Sheets.Add
Run Code Online (Sandbox Code Playgroud)

您不必知道它的位置,或者它的名称是什么,您只需将其称为WS.
如果您仍然希望以"老式"方式执行此操作,请尝试以下操作:

Sheets.Add.Name = "Test"
Run Code Online (Sandbox Code Playgroud)

  • 是的,我试过了.问题是,它确实第二次完美无缺,或者你打开调试器或工作表是空白的,或月亮是在第三季... (4认同)