Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用的Excel VBA对象已与其客户端断开连接_Excel_Vba_Excel 2016 - Fatal编程技术网

调用的Excel VBA对象已与其客户端断开连接

调用的Excel VBA对象已与其客户端断开连接,excel,vba,excel-2016,Excel,Vba,Excel 2016,所以我正在制作一个用户表单,从不同的excel表格中提取数据,并根据用户输入构建一个汇总表。所有这些都在一个工作簿中,没有外部链接,我看到的大多数解决此错误的方法都是尝试连接/打开外部源代码的结果。代码一直工作到到达第十个条目,然后它告诉我调用的对象已与其客户端断开连接错误,并重新启动excel。我试着注释第十个条目,同样的错误在另一个时间间隔出现 Private Sub Submit_Click() If TextBox_1.Value > 0 Then Worksheets

所以我正在制作一个用户表单,从不同的excel表格中提取数据,并根据用户输入构建一个汇总表。所有这些都在一个工作簿中,没有外部链接,我看到的大多数解决此错误的方法都是尝试连接/打开外部源代码的结果。代码一直工作到到达第十个条目,然后它告诉我调用的对象已与其客户端断开连接错误,并重新启动excel。我试着注释第十个条目,同样的错误在另一个时间间隔出现

Private Sub Submit_Click()


If TextBox_1.Value > 0 Then

   Worksheets("FirstSheet").UsedRange.Offset(3).Resize(Worksheets("FirstSheet").UsedRange.Rows.Count - 3).Copy
   Worksheets("Template").Rows("4").Insert shift:=xlDown

End If

If TextBox_2.Value > 0 Then

   Worksheets("SecondSheet").UsedRange.Offset(3).Resize(Worksheets("SecondSheet").UsedRange.Rows.Count - 3).Copy
   Worksheets("Template").Rows("4").Insert shift:=xlDown

End If

If TextBox_3.Value > 0 Then

   Worksheets("ThirdSheet").UsedRange.Offset(3).Resize(Worksheets("ThirdSheet").UsedRange.Rows.Count - 3).Copy
   Worksheets("Template").Rows("4").Insert shift:=xlDown

End If

...

If TextBox_9.Value > 0 Then

   Worksheets("NinthSheet").UsedRange.Offset(3).Resize(Worksheets("NinthSheet").UsedRange.Rows.Count - 3).Copy
   Worksheets("Template").Rows("4").Insert shift:=xlDown

End If

**If TextBox_10.Value > 0 Then
   Worksheets("TenthSheet").UsedRange.Offset(3).Resize(Worksheets("TenthSheet").UsedRange.Rows.Count - 3).Copy
   Worksheets("Template").Rows("4").Insert shift:=xlDown
End if**


问题是否源于代码中的重复次数?工作表中是否有我应该查找的导致此问题的特定项目

因此,昨晚我通过将代码拆分并使用变量执行命令,使其运行起来。不知道为什么它会起作用,但它起作用了

Private Sub Submit_Click()

Dim Template As Range
Dim FirstSheet As Range

Set Template = Worksheets(2).Range("$A$4")
Set FirstSheet = Worksheets(3).UsedRange.Offset(3).Resize(Worksheets(3).UsedRange.Rows.Count - 3)

If TextBox_1.Value > 0 Then

   FirstSheet.Copy
   Template.Insert shift:=xlDown

End If

不需要单独指定每个图纸,可以使用如下循环

Option Explicit
Private Sub Submit_Click()

    Dim wb As Workbook, wsSource As Worksheet, wsTarget As Worksheet
    Set wb = ThisWorkbook
    Set wsTarget = wb.Sheets("Template")

    Dim sheetnames As Variant
    sheetnames = Array("", "FirstSheet", "SecondSheet", "ThirdSheet", "ForthSheet", _
    "FifthSheet", "SixthSheet", "SeventhSheet", "EighthSheet", "NinthSheet", "TenthSheet")

    Dim n As Integer, sName As String, sValue As String
    Dim rngSource As Range, rngTarget As Range

    Application.ScreenUpdating = False
    For n = 1 To UBound(sheetnames)
        sName = "TextBox_" & CStr(n)
        sValue = Me.Controls(sName)
        If Len(sValue) > 0 Then

            ' define ranges
            Set wsSource = wb.Sheets(sheetnames(n))
            Set rngSource = wsSource.UsedRange.Offset(3).Resize(wsSource.UsedRange.Rows.Count - 3)
            Set rngTarget = wsTarget.Rows(4)

            ' copy to Template
            rngSource.Copy
            rngTarget.Insert shift:=xlDown
            Application.CutCopyMode = False

        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Finished", vbInformation
End Sub

我试图加粗If TextBox_10语句,但它看起来不起作用。对不起,您要复印多少张,最大的行数和列数是多少?。我无法复制20张每张1000行100列=13Mb电子表格的错误。您有什么windows版本、excel版本和多少内存?不超过20页,不超过100行。Excel 2016,Windows 10。我可以让它工作,所以我会张贴一个答案很快。谢谢你的帮助。