编译错误下一个没有 for



此代码将 Sheet1(订单)中的所有列合并为 Sheet3(Masterlist) 中的一列。

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

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

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

当你嵌套 For 循环时,你应该始终引用在 Next 语句中递增/递减/步进的变量

 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

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

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

代码是为我编译的,这让我相信它可能是一个死引用。在 VBE 中,单击工具/参考,查看是否有列为"缺失"的内容

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

取消选中 Visual Basic for Application 从 VBA 引用保存并重新添加。

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

  1. 转到VBA编辑器,
  2. 单击工具,然后单击参考
  3. 您应该有一个名为"Visual Basic for Application"的项目取消选中该项目
  4. 单击确定
  5. 保存电子表格
  6. 执行上面的步骤 1 和 2
  7. 选中
  8. 您取消选中的项目"Visual Basic for Application"
  9. 单击确定
  10. 保存电子表格
  11. 关闭电子表格以及您可能拥有的任何 Excel 实例和对象,如下所示: - 关闭所有Excel文件和Excel程序,如果你有任何打开 - 转到任务管理器(通过执行 Alt+Ctrl+Del),然后选择任务管理器 -转到进程选项卡 -按进程名称排序 - 在列表中查找任何Excel.exe并强制关闭它们
  12. 打开有问题的电子表格并尝试使用您的代码。

让我们知道。

谢谢!

最新更新