Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
对于VBA中的每个循环,意外跳过行_Vba_Excel - Fatal编程技术网

对于VBA中的每个循环,意外跳过行

对于VBA中的每个循环,意外跳过行,vba,excel,Vba,Excel,我写了这段代码,这是一个更大问题的一部分。最初,它应该开始将一些数据从一个工作表传输到另一个工作表。。但它不断跳过行,复制一行,然后复制另一行,跳过,复制,跳过。。。我使用Select方法只是为了测试,而不是复制 Dim sharepointSheet As Worksheet Dim masterSheet As Worksheet Dim sharepointTable As Range 'Auxliary variable Dim row As Range Dim cell As Ran

我写了这段代码,这是一个更大问题的一部分。最初,它应该开始将一些数据从一个工作表传输到另一个工作表。。但它不断跳过行,复制一行,然后复制另一行,跳过,复制,跳过。。。我使用Select方法只是为了测试,而不是复制

Dim sharepointSheet As Worksheet
Dim masterSheet As Worksheet
Dim sharepointTable As Range

'Auxliary variable
Dim row As Range
Dim cell As Range
Dim RowLast As Long



Set sharepointSheet = ThisWorkbook.Worksheets("Sharepoint List")
Set masterSheet = ThisWorkbook.Worksheets("Master List")

Set sharepointTable = masterSheet.Range("A2", "F133")


For Each row In sharepointTable.Rows
    row.Cells(row.row, 3).Select

   ' RowLast = masterSheet.Cells(Rows.Count, "A").End(xlUp).row + 1
   ' masterSheet.Cells(RowLast, "A").PasteSpecial

Next row

出现此问题的原因是您选择的行是相对于您的
范围,而不是工作表范围

如果将“选择行”更改为以下内容,则会解决您的问题:

masterSheet.Cells(row.row, 3).Select

也不是说对一个范围使用
row
这样的变量不是一个好主意,因为它会变得非常混乱

循环中的某些内容也在增加行计数器。可能是第+1行,但即使我将注释标记放在这些行的前面,就像在示例中一样,它仍以相同的方式选择。我唯一能想到的是,范围来自一个格式化的表…但它不可能是它..我猜它是有效的。。虽然很奇怪,但它在两方面都有意义,不是吗?当您从中指定
单元格时,您可以将
范围视为工作表上的新参考点。因此,当您从第一行开始时,
row.Cells(1,1)
将是同一行,
row.Cells(2,1)
将是下一行等。对第2行执行
row.Cells(row.row,1)
,实际上是工作表上的第3行。天啊,我希望这是有道理的,太多行了。如果你也能接受这个答案,那就太棒了:)