我正在尝试在Excel中的VBA中创建一个宏来将一个工作表的内容复制到另一个工作表(最终将升级为将内容从一个工作簿复制到另一个工作簿但需要首先证明该概念)但我一直遇到Run时间错误'9':“下标超出范围”。问题是,我无法看到突出显示的行的哪一部分可能超出范围。
我正在使用一个名为“MetaTesting”的工作簿,它有3个工作表,下面的代码从A1开始,只是向上递增。我以前能够引用这两个工作表来复制一行,所以我知道问题不在那里。这是调试器突出显示的第四行文本(以“Do While Trim(Application ...”)开头的行。
注意:编辑时要考虑文件扩展名(如评论中所示)。同样的错误仍然被抛出,但现在它被抛出第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
任何和所有帮助表示赞赏。
答案 0 :(得分:1)
您可以在没有所有循环的情况下执行此操作,只需复制整个工作表 - 复制功能将处理为您跳过空白区域。
func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
//You can stop the audio
player.stop()
}
仅复制一组单元格:
Workbooks("MetaTesting").Worksheets(1).Cells.Copy
Workbooks("MetaTesting").Worksheets(2).Cells.PasteSpecial xlPasteValues
答案 1 :(得分:1)
第11行的问题可能是由于(&#34; MetaTesting.xlms&#34;)。看起来文件扩展上有点错误;应该是.xlsm,就像它在等式的前半部分一样。
答案 2 :(得分:1)
好了,现在确定需要扩展工作簿扩展,让我们将代码剪切到必要的位置。
with Workbooks("MetaTesting.xlsm")
.Worksheets(3).Cells.Copy Destination:=.Worksheets(1).Cells
.Worksheets(1).Cells = .Worksheets(1).Cells.Value
end with