Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 为什么我的变量开始超出我想要的范围?_Excel_Vba - Fatal编程技术网

Excel 为什么我的变量开始超出我想要的范围?

Excel 为什么我的变量开始超出我想要的范围?,excel,vba,Excel,Vba,因此,我正在根据工作簿中的一张工作表创建一个数据库。所以我有三张纸,“第一张”,“第二张”和“数据”。我有一个用户表单,可以在“表1”和“表2”中输入信息。然后,所有这些信息都将传输到“数据”选项卡。所以“工作表1”可能有3行信息,而“工作表2”可能有5行。这些信息有时会被更改或删除 我遇到的问题是,我的“rs.Cells(Row.Row,2)”从第一行开始。但我把它设置在我想要的特定范围内。为什么它开始超出范围 Dim rs as worksheet Dim ws as worksheet:

因此,我正在根据工作簿中的一张工作表创建一个数据库。所以我有三张纸,“第一张”,“第二张”和“数据”。我有一个用户表单,可以在“表1”和“表2”中输入信息。然后,所有这些信息都将传输到“数据”选项卡。所以“工作表1”可能有3行信息,而“工作表2”可能有5行。这些信息有时会被更改或删除

我遇到的问题是,我的“rs.Cells(Row.Row,2)”从第一行开始。但我把它设置在我想要的特定范围内。为什么它开始超出范围

Dim rs as worksheet
Dim ws as worksheet: Set ws = ThisWorkBook.Worksheets("Data")
Dim NextRowD as Long
Dim lastRow as Long
Dim note as Range

lastRow = oWS.Range("A:A").find("No.", lookat:=xlWhole, LookIn:=xlValues).Row
NextRow = oWS.Range("A:A").find(what:="", after:=Cells(lastRow, 1)).Row
Set note = oWS.Range("A:K").find("COMMENTS")

For Each rs In ThisWorkbook.Worksheets

If rs.name <> "Data" Then
    For Each rw In rs.Range(rs.Cells(lastRow).Offset(1, 0), rs.Cells(note.Row, 18).Offset(-4, 0)).Rows 'this is where I want the range to start

        NextRowD = ws.Range("A:A").find("", after:=Cells(rankD.Row, 1)).Row

        ws.Cells(NextRowD, 2) = Me.tbCustomer
        ws.Cells(NextRowD, 8) = Me.cbLocation
        ws.Cells(NextRowD, 16) = rs.Cells(rw.Row, 2)****** 'the problem is here

    Next Row

End If
Next rs
Dim rs作为工作表
将ws设置为工作表:设置ws=ThisWorkBook.Worksheets(“数据”)
暗淡的下一个世界一样长
最后一排一样长
调暗音符作为音域
lastRow=oWS.Range(“A:A”).find(“No.”,lookat:=xlother,LookIn:=xlValues)。行
NextRow=oWS.Range(“A:A”).find(what:=”,after:=单元格(lastRow,1)).Row
Set note=oWS.Range(“A:K”).find(“注释”)
用于此工作簿中的每个rs。工作表
如果rs.name为“数据”,则
对于rs.Range(rs.Cells(lastRow).Offset(1,0),rs.Cells(note.Row,18).Offset(-4,0)).Rows'中的每个rw,这是我希望范围开始的位置
NextRowD=ws.Range(“A:A”).find(“,后面:=单元格(rankD.Row,1)).Row
ws.Cells(NextRowD,2)=Me.tbCustomer
ws.Cells(NextRowD,8)=Me.cbLocation
ws.Cells(NextRowD,16)=rs.Cells(rw.Row,2)***'问题就在这里
下一排
如果结束
下一个rs

什么工作表是
范围(单元格(最后一行)、偏移量(1,0)、单元格(注意:第18行)、偏移量(-4,0))。应该打开哪些行?所有这些
范围
单元格
都需要限定,以便您引用正确的工作表。否则,它们将默认为
ActiveSheet
,这可能是不需要的:
rs.Range(rs.Cells(lastRow).Offset(1,0),rs.Cells(note.Row,18).Offset(-4,0))。Rows
(这只是一个示例,我只是假设它是
rs
)。此外,考虑使用除<代码>行>代码>之外的变量名,因为这已经是Excel库中的对象名称。您在这里使用它的方式可能很好,但它可能会导致奇怪的问题。@BigBen,因此该工作表是基于activesheet的。因此,我可以有多个选项卡,每个选项卡的工作表格式相同。我正在将这些选项卡中的数据拉入一个名为“data”的主控表。@jnevil那么我需要创建一个变量来查看每个表的范围吗?我该怎么做?我不会像
row
那样使用变量
row。row
读起来不太好