没有For编译错误

此代码将Sheet1(Orders)中的所有列组合到Sheet3(Masterlist)中的一列中。

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

一些postbuild议我有一个循环内循环其他人说,我需要一个结束如果某处。 我是新手,很可能需要看看修改后的代码是什么样的。 评论似乎没有帮助我。

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语句中递增/递减variables的variables

  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),并且编译时没有任何错误。 你不知道怎么复制你的所有代码。

过去遇到的一个错误是文本中出现了不可打印的字符,并且在定位和删除之前会产生虚假的编译失败。 我build议将这个问题的代码块复制回源文件中,删除不可打印的字符。

代码为我编译,这导致我相信它可能是一个死的参考。 在VBE中单击工具/参考,看看是否有东西列为“失踪”

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

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

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

  1. 转到VBA编辑器,
  2. 点击工具,然后参考
  3. 您应该有一个名为“Visual Basic For Application”的项目取消选中该项目
  4. 点击确定
  5. 保存您的电子表格
  6. 做上面的步骤1和2
  7. 检查未选中的项目“Visual Basic For Application”
  8. 点击确定
  9. 保存您的电子表格
  10. closures您的电子表格和任何Excel实例和对象,你可能有如下: – closures所有的Excel文件和Excel程序,如果你有任何打开 – 进入任务pipe理器(通过做Alt + Ctrl + Del),然后select任务pipe理器 – 去进程选项卡 – 按进程名称sorting – 查找列表中的任何Excel.exe并强制closures它们
  11. 打开有问题的电子表格,并尝试您的代码。

让我们知道

谢谢!