Excel I';m命中运行时错误9“;下标超出范围“;用我的代码
我正在做一个仓库项目经理,在那里我可以从仓库金额中添加或删除项目 我一直坚持将现有的数据范围复制到我的管理器中,这是我用下面的VBA脚本完成的。它应该使用用户表单将某些数据范围从工作簿复制到另一个工作簿 我打开要复制的工作簿,通过我已经定义的文件路径(“Tiedosto.Text”),这是一个文本框Excel I';m命中运行时错误9“;下标超出范围“;用我的代码,excel,vba,Excel,Vba,我正在做一个仓库项目经理,在那里我可以从仓库金额中添加或删除项目 我一直坚持将现有的数据范围复制到我的管理器中,这是我用下面的VBA脚本完成的。它应该使用用户表单将某些数据范围从工作簿复制到另一个工作簿 我打开要复制的工作簿,通过我已经定义的文件路径(“Tiedosto.Text”),这是一个文本框 Private Sub AddFromWorkbook_Click() Dim wb As Workbook Dim thiswb As Workbook Dim i As Lon
Private Sub AddFromWorkbook_Click()
Dim wb As Workbook
Dim thiswb As Workbook
Dim i As Long, j As Long
Dim LastRow As Long
Set thiswb = ThisWorkbook
Application.ScreenUpdating = True
Set wb = Workbooks.Open(Filename:=Tiedosto.Text)
问题是这一行:“与wb.Sheets(“Sheet1”)
”
所以这应该是从工作簿到另一个工作簿的逐行复制。
但当我尝试运行它时,它只返回运行时错误9。在Excel中,新工作表名称取决于您的MS Office语言版本。因此,新工作表的名称并不总是“Sheet1”,它可以是“List1”左右,具体取决于语言
考虑到这一点,我建议用
wb.Sheets(1)
替换行wb.Sheets(“Sheet1”)
,这是工作簿的第一张工作表,并且始终存在。您打开的工作簿中肯定存在“Sheet1”吗?我将所有工作表引用,即wb.Sheets(“Sheet1”)更改为wb.Sheets(1)现在我遇到了不同的问题:运行时错误1004,有以下行:。行(I)。复制目标:=thiswb.Sheets(4)。范围(3&j)。我想问题在。范围(3&j)
内。例如,如果j=1,则得到不存在的.Range(31)
。范围需要2个参数。将范围(3&j)更改为。范围(3,j)没有运气。仍然是相同的错误。是否存在.Rows(i).Copy Destination:=thiswb.Sheets(4).Range(3&j)?(表(4))将.Range(3&j)
更改为.Rows(j)
@Toni
With wb.Sheets("Sheet1")
LastRow = .Cells(.Rows.count, 13).End(xlUp).Row
End With
MsgBox (LastRow)
With thiswb.Sheets("Sheet4")
j = .Cells(.Rows.count, 3).End(xlUp).Row + 1
End With
For i = 2 To LastRow
With wb.Sheets("Sheet1")
If .Cells(i, 13).Value = "X" Then
.Rows(i).Copy Destination:=thiswb.Sheets("Sheet4").Range(3 & j)
j = j + 1 'Kasvatetaan j.n arvoa sen edetessä.
End If
End With
Next i
End Sub