【发布时间】:2020-10-02 04:04:06
【问题描述】:
首先我打开一个子工作簿而不是从工作表中复制数据以更新主工作簿(粘贴在下面):
当我尝试从刚刚打开的工作簿中为工作表设置变量时,就会出现问题。它说:“下标超出范围”。
它发生了什么以及我该如何解决它,或者我必须从另一个方向走错方向。
Sub Data_Inbound()
Dim mywb As Workbook
Dim FName As String
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long
Set mywb = ActiveWorkbook
On Error GoTo errHandler:
FName = Application.GetOpenFilename(filefilter:="Excel Files,*.xlsx*", Title:="Please select an Excel file")
Workbooks.Open FileName:=FName
Set wsCopy = Workbooks(FName).Worksheets(Sheet1)
Set wsDest = Workbooks(mywb).Worksheets(Sheet1)
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row
wsCopy.Range("A2" & lCopyLastRow).Copy _
wsDest.Range("A" & lDestLastRow)
wsDest.Activate
errHandler:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Data_Inbound"
Exit Sub
End Sub
我看到其他人也有同样的问题,但他们使用工作表名称,对我来说,我使用了一个变体变量,但这会导致错误: 其他人:
Set wsCopy = Workbooks("Warranty Template.xlsm").Worksheets("PivotTable")
【问题讨论】:
-
按 F8 单步执行代码,直到出错,然后更新您的问题,更具体地说明您的期望。
-
我在链接中添加了图片错误描述,这就是我看到错误的地方。
-
将
Set wsCopy = Workbooks(FName).Worksheets(Sheet1)更改为Set wsCopy = Workbooks(FName).Worksheets("Sheet1")看看会发生什么或指定Sheet1是什么 -
mywb是包含此代码的工作簿吗? -
是的,我将它用于活动工作表