看不到有什么“下标超出范围”

我试图在Excel中创build一个在VBA中的macros,以将一个工作表的内容复制到另一个(最终将升级到复制内容从一个工作簿到另一个,但需要首先certificate这个概念),但我一直遇到运行时错误“9”:“下标超出范围”。 事情是,我看不出突出显示的行的哪一部分可能超出范围。

我正在使用一个名为“MetaTesting”,有3个工作表,下面的代码从A1开始,只有向上增加。 我以前已经能够参考这两个工作表,以便能够跨单行复制,所以我知道这个问题不存在。 这是debugging器突出显示的第四行文本(“While While Trim(Application …”)开始的行。

注意:编辑时考虑到文件扩展名(build议在注释中)。 同样的错误仍然被抛出,但现在它被扔在第11行(在第一个评论下)

Private Sub CommandButton21_Click() Dim i As Integer, j As Integer, k As Integer i = 1 Do While Trim(Application.Workbooks("MetaTesting.xlsm").Worksheets(3).Cells(i, 1).Value) <> "" j = 1 Do While Trim(Application.Workbooks("MetaTesting.xlsm").Worksheets(3).Cells(1, j).Value) <> "" 'Copy cell data from one sheet to the other Application.Workbooks("MetaTesting.xlsm").Worksheets(1).Cells(i, j).Value = Application.Workbooks("MetaTesting.xlms").Worksheets(3).Cells(i, j).Value j = j + 1 Loop 'Copy formatting of previous row and paste it on current row. Starts at row 3, copying formatting from row 2 If i > 2 Then k = i - 1 Application.Workbooks("MetaTesting.xlsm").Worksheets(1).Cells(k, j).Copy Application.Workbooks("MetaTesting.xlsm").Worksheets(1).Range(Cells(i, 1), Cells(i, j)).PasteSpecial Paste:=xlPasteFormats End If i = i + 1 Loop End Sub 

任何和所有帮助表示赞赏。

你可以做到这一点,没有所有的循环,只是复制整个工作表 – 复制function将处理跳过你的空白区域。

 Workbooks("MetaTesting").Worksheets(1).Cells.Copy Workbooks("MetaTesting").Worksheets(2).Cells.PasteSpecial xlPasteValues 

仅复制一个单元块:

 Workbooks("MetaTesting").Worksheets(1).Range("A1:M100").Copy Workbooks("MetaTesting").Worksheets(2).Range("F12").PasteSpecial xlPasteValues ' this is the top-left corner of the paste, it'll fill in the rest 

第11行的问题可能是由于(“MetaTesting.xlms”)。 在文件扩展上看起来有点小错, 应该是.xlsm就像是在上半部分的方程式。

好的,现在确定工作簿扩展是必需的,那就让我们把你的代码放到必要的地方。

 with Workbooks("MetaTesting.xlsm") .Worksheets(3).Cells.Copy Destination:=.Worksheets(1).Cells .Worksheets(1).Cells = .Worksheets(1).Cells.Value end with