关闭工作簿时我收到:
Run-time error 9 subscript out of range
这是 VBA 代码:
Set wbk = Workbooks.Open(path & filename)
wbk.Sheets(sheetname).Range("b6").Resize(row_count, col_count).Copy
ThisWorkbook.Sheets(sheetname).Range("b6").Resize(1, col_count).PasteSpecial xlPasteValues
wbk.close
有人能帮助我摆脱这个错误吗?
答案1
这种错误表明你引用了一个不存在的细胞或者范围。就你的情况而言,我认为问题不在于关闭,而在于以下其中一行:
wbk.Sheets(sheetname).Range("b6").Resize(row_count, col_count).Copy
ThisWorkbook.Sheets(sheetname).Range("b6").Resize(1, col_count).PasteSpecial xlPasteValues
验证 sheetname
、row_count
和是否col_count
包含有效值。
答案2
为什么在粘贴中使用“.Resize”方法?我认为您试图复制 3x4 单元格的范围并将其粘贴到 1x4 单元格中。这是不可能的。尝试在不调整大小的情况下粘贴:
Set wbk = Workbooks.Open(path & filename)
wbk.Sheets(sheetname).Range("b6").Resize(row_count, col_count).Copy
ThisWorkbook.Sheets(sheetname).Range("b6").PasteSpecial xlPasteValues
wbk.close
我在其他帖子中看到一种将多个工作表中的数据复制到一个工作表中的方法:
Public Sub CopyMultipleData()
Dim ws As Worksheet, LR1 As Long, LR2 As Long
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Master" Then
LR1 = Sheets("Master").Range("A" & Rows.Count).End(xlUp).row + 1
LR2 = ws.Range("D" & Rows.Count).End(xlUp).row
ws.Range("A1:J" & LR2).Copy Destination:=Sheets("Master").Range("A" & LR1)
End If
Next ws
Application.ScreenUpdating = True
End Sub