Vba 下一步编译错误,不包含

Vba 下一步编译错误,不包含,vba,excel,Vba,Excel,此代码将Sheet1订单中的所有列合并为Sheet3主列表中的一列 我遇到的问题是在第26行,下一个错误是没有For 一些帖子建议我在一个循环中有一个循环,其他人说如果在某个地方我需要一个结束。我是新手,可能需要看看修订后的代码会是什么样子。评论似乎对我没有帮助 Sub ToArrayAndBack() Dim arr As Variant, lLoop1 As Long, lLoop2 As Long Dim arr2 As Variant, lIndex As Long 'turn off

此代码将Sheet1订单中的所有列合并为Sheet3主列表中的一列

我遇到的问题是在第26行,下一个错误是没有For

一些帖子建议我在一个循环中有一个循环,其他人说如果在某个地方我需要一个结束。我是新手,可能需要看看修订后的代码会是什么样子。评论似乎对我没有帮助

Sub ToArrayAndBack()
Dim arr As Variant, lLoop1 As Long, lLoop2 As Long
Dim arr2 As Variant, lIndex As Long

'turn off updates to speed up code execution
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
End With

ReDim arr2(Sheet1.UsedRange.Cells.Count - Sheet1.UsedRange.SpecialCells(xlCellTypeBlanks).Count)

arr = Sheet1.UsedRange.Value

Set myRange = Worksheets("Orders").Range("A1:A" & _
Worksheets("Orders").Cells(Worksheets("Orders").Rows.Count, 1).End(xlUp).Row)
i = 2
Do While i <= myRange.Rows.Count
     For lLoop1 = LBound(arr, 1) To UBound(arr, 1)
         For lLoop2 = LBound(arr, 2) To UBound(arr, 2)
            If Len(Trim(arr(lLoop1, lLoop2))) > 0 Then
                arr2(lIndex) = arr(lLoop1, lLoop2)
                lIndex = lIndex + 1
            End If
        Next
    Next
  i = i + i
Loop

Dim ws As Worksheet
Dim found As Boolean
found = False
For Each ws In ThisWorkbook.Sheets
    If ws.Name = "MasterList" Then
        found = True
        Exit For
    End If
Next
If Not found Then
    Sheets.Add.Name = "MasterList"
End If

Set ws = ThisWorkbook.Sheets("MasterList")
With ws
     .Range("A1").Resize(, lIndex + 1).Value = arr2

     .Range("A1").Resize(, lIndex + 1).Copy
     .Range("A2").Resize(lIndex + 1).PasteSpecial Transpose:=True
     .Rows(1).Delete
End With

With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
    .DisplayAlerts = True
End With

End Sub

我将您的代码复制并粘贴到VBA Sub for EXCEL 2010中,它编译时没有任何错误。不知何故,您没有复制所有代码


我在过去遇到的一个错误是,文本中出现不可打印的字符,并产生虚假的编译失败,直到找到并删除它。我建议将此问题中的代码块复制回源文件,以删除不可打印的字符。

代码为我编译,这使我相信它可能是一个死引用。在VBE中,单击“工具/引用”,查看是否有列出为缺少的内容

在嵌套循环时,应始终在下一语句中引用要递增/递减/步进的变量

 For lLoop1 = LBound(arr, 1) To UBound(arr, 1)
     For lLoop2 = LBound(arr, 2) To UBound(arr, 2)
        If Len(Trim(arr(lLoop1, lLoop2))) > 0 Then
            arr2(lIndex) = arr(lLoop1, lLoop2)
            lIndex = lIndex + 1
        End If
    Next lLoop2
Next lLoop1

你的代码编译得很好。请尝试以下操作:

取消选中Visual Basic For Application from VBA references save并将其添加回

如果您不知道如何执行此操作,请执行以下步骤:

转到VBA编辑器, 单击工具,然后单击参考 您应该有一个名为Visual Basic For Application的项目取消选中该项目 单击“确定” 保存您的电子表格 执行上述步骤1和2 选中未选中的项Visual Basic For Application 单击“确定” 保存您的电子表格 关闭您的电子表格以及您可能拥有的任何Excel实例和对象,如下所示: -如果有任何打开的Excel文件和Excel程序,请关闭所有Excel文件和Excel程序 -通过执行Alt+Ctrl+Del转到任务管理器,然后选择任务管理器 -转到“流程”选项卡 -按进程名称排序 -在列表中查找任何Excel.exe并强制将其全部关闭 打开有问题的电子表格并尝试代码。 让我们知道


谢谢大家!

我复制并粘贴了它,现在我在第24行得到了一个超出范围的下标。有什么想法吗?这正是我要分享的答案,但被击败了。好吧,这可能是最好的做法,但不这样做不应该导致OP得到的错误。我做了你的更改。我现在在arr2lIndex=arrloop1,lLoop2行上得到的下标超出了范围。我被告知这可能是因为我的变量没有声明。我不知道如何解决这个问题。