“调用的对象已与其客户端断开连接。”

“调用的对象已与其客户端断开连接。”

我有一个按钮,用于提示输入并创建新选项卡。第一次运行效果很好,但后续运行会抛出此错误:

在此处输入图片描述

以下是代码:

Sub btnAddProject()
    Dim template As Worksheet
    Dim newSheet As Worksheet
    Dim newName As String


    newName = Application.InputBox("Enter Project Name")        'get name
    Worksheets("Template").Visible = True                       'Unhide template
    Set template = ActiveWorkbook.Sheets("Template")            'identify template
    template.Copy After:=Sheets(Sheets.Count)                   'create copy
    Set newSheet = ActiveSheet                                  'identify new sheet
    newSheet.Name = newName                                     'rename sheet
    'deleteNames (newSheet.Name)                                'delete copied named ranges with worksheet scope
    newSheet.Range("D2").Value = newName                        'Change header on new sheet
    Worksheets("Template").Visible = False                      'Hide template
    Worksheets("Consolidated Grid").Activate                    'switch back to dashboard
    updateProjectIndex (newName)
End Sub

错误被抛出newSheet.Name = newName,它给我留下了一个名为“模板(2)”的工作表

是什么原因造成的?

如果相关的话,这里是子程序updateProjectIndex,它基本上只是在项目列表中添加了一个新行(在两处):

Sub updateProjectIndex(newName)
    Application.ScreenUpdating = False
    Sheets("Dashboard").Select

    ActiveSheet.Rows(12).Select
    Selection.Copy
    Selection.Insert Shift:=xlDown

    ActiveSheet.Range("B13").Value = newName


    Sheets("Consolidated Grid").Select

    ActiveSheet.Columns("F:F").Select
    Selection.Copy
    Selection.Insert Shift:=xlRight

    ActiveSheet.Range("G1").Value = newName


    Sheets("Dashboard").Select
    ActiveSheet.Range("B13").Select
    Application.ScreenUpdating = True
End Sub

答案1

您的代码对我来说很好用,尽管我必须删除额外的子调用(所以我删除了updateProjectIndex(newName)ANDWorksheets("Consolidated Grid").Activate

要进行调试,请在电脑上的新 Excel 中尝试此代码,以查看问题是否与该工作簿或 Excel 相关

问题出在事件代码中

尝试注释掉这两行代码,看看问题是否仍然存在。如果没有问题,请逐个取消注释,直到看到错误为止,然后通过这种方式消除错误。

我建议您使用文件副本来执行此操作,以便您可以随意破坏它!

答案2

我想我明白了,尽管我不确定为什么。我的Workbook_Open子目录中有以下代码:

   Worksheets("Dashboard").Activate
    If InStr(Application.ActiveWorkbook.Path, "sharepoint.com") Then
        Range("1:1").Select
        Selection.EntireRow.Hidden = True

    Else
        Range("1:1").Select
        Selection.EntireRow.Hidden = False
    End If

目的是确保人们知道他们正在打开离线版本。我猜想冲突出在Worksheets.Activate这里?也许有人可以解释一下。

不管怎样,删除它似乎已经 100% 解决了问题。

更新:替换了所有代码,但.Activate它仍然有效。我猜从其自己的 Workbook_Open 例程激活工作簿会导致某种循环?

相关内容