Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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 VBA循环未移动到下一行_Excel_Vba_Loops - Fatal编程技术网

Excel VBA循环未移动到下一行

Excel VBA循环未移动到下一行,excel,vba,loops,Excel,Vba,Loops,我太困了。我不明白为什么我不能让这个简单的循环工作,我仍然需要扩展,一旦我完成了第1部分。我的循环不会移动到下一个i以继续搜索 Sub TryThis() Dim Purch As String Dim Sales As String Dim finalrow As Integer Dim i As Integer Purch = "PURCHASES" Sales = "SALES" finalrow = Sheets("Sheet1").Range("A12000").End(xlUp

我太困了。我不明白为什么我不能让这个简单的循环工作,我仍然需要扩展,一旦我完成了第1部分。我的循环不会移动到下一个i以继续搜索

Sub TryThis()

Dim Purch As String
Dim Sales As String
Dim finalrow As Integer
Dim i As Integer

Purch = "PURCHASES"
Sales = "SALES"

finalrow = Sheets("Sheet1").Range("A12000").End(xlUp).Row

For i = 6 To finalrow
If Cells(i, 1) = Purch Then
  Range(Cells(i, 1), Cells(i, 7)).Copy
  Sheets("Sheet2").Activate
  Range("A300").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
  Sheets("Sheet1").Activate
End If

Next i

Range("A1").Select


End Sub
我是空的,所以我知道我错过了一些简单的东西。最后,我要做的是遍历行,如果行、列A有购买或销售,则将该行复制到第2页

理想情况下,我希望在第2页的C栏中展示销售,在b栏中展示采购,但我将在稍后处理这一问题,我只是想开始工作,必须认真思考,我错过了简单的答案


谢谢

检查分配给finalrow的值

如果没有可用的文件,这很难诊断。我在你的代码中找不到任何明显的错误,所以我会根据经验去做

有很多方法可以确定电子表格的最后一行是什么。您正在使用我的最爱,但它有几个陷阱:

列A可以为空。我通常在使用从另一个工作表粘贴的数据或SQL查询时遇到这种情况,但这是特定于项目的。 列A可以扩展超过12000行。当我用公式填充列A并自动填充过深时,通常会遇到这种情况。然后,EndxlUp将转到A1。
为了解决这两个问题,我总是使用最大可能行作为起点;A65563适用于Office 2010或更早版本,A1048576适用于之后的任何版本。它不需要花费更多的时间来处理,并获得更一致的结果。

finalrow的价值是什么?如果小于6,则不执行循环。此外,最好明确说明您正在使用的工作表。使用单元格和区域而不明确指定要使用的工作表会导致意外结果。您是指finalrow=SheetsSheet1.RangeA12000.Row还是finalrow=12000?按照您的方式,finalrow被设置为值1。此数据转储的最后一行是403。每次运行该宏时,通常至少会有400行。运行宏时Sheet1是否处于活动状态?请逐步查看代码。你是唯一一个可以看到你的数据的人-我们在黑暗中。请回答第一个问题。很高兴大家都在讨论最后一行的问题,只是我不明白这和我的循环问题有什么关系。我的循环只对我正在搜索的变量的第一个实例起作用,并且从未找到另一个实例。我需要把大约100件购买的东西放到另一张工作表上。那么,为什么循环不移动到它找到的第一个实例之外呢。我已经多次更改了最后一行,以使用那里每个人的建议。它仍然不能解决我的问题。@ErikOtterholt-第一次遇到For循环时,我被显式设置为6。一旦下一行被点击,它会将i与finalrow进行比较。如果finalrow为6或更少,则它将离开循环。测试这一点的最简单方法是将For行更改为i=6到10。如果超过6,那么你对finalrow的定义就是问题所在。首先,你只需要用购买来比较。第二,你必须检查a列中的单元格内容,请尝试修剪它们,使其成为大写字母哦,我太累了,很有趣,睡眠不足让你错过了显而易见的内容。我在代码中使用断点,我的购买实例相隔几行。我只会按F5 3或4次,这不会让我进入下一行数据。我的代码从一开始就有效。我觉得自己很愚蠢。试图对某些问题进行故障排除,但没有意识到我的错误,即不让代码进入下一行。哦,我需要睡觉。谢谢大家