Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel I';m命中运行时错误9“;下标超出范围“;用我的代码_Excel_Vba - Fatal编程技术网

Excel I';m命中运行时错误9“;下标超出范围“;用我的代码

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

我正在做一个仓库项目经理,在那里我可以从仓库金额中添加或删除项目

我一直坚持将现有的数据范围复制到我的管理器中,这是我用下面的VBA脚本完成的。它应该使用用户表单将某些数据范围从工作簿复制到另一个工作簿

我打开要复制的工作簿,通过我已经定义的文件路径(“Tiedosto.Text”),这是一个文本框

  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