2013-01-22 84 views
0

我编写了一个宏,它接收一些源数据并将其写入多个表单,该表单在该宏运行之前和之后保持隐藏状态。编写完宏后,我运行它时只会更新每张表中的几条记录(例如,在第一个隐藏表中,它会从1000个以上更新21行。发生这种情况的原因是什么?当然,它应该更新它们或?没有人林没有得到任何错误,要么我用尽隐藏表格上的Excel/Visual Basic宏

Application.ScreenUpdating = False 
Worksheets("FT Raw").Visible = True 
Worksheets("L1").Visible = True 
Worksheets("L2").Visible = True 
Worksheets("L3").Visible = True 
Worksheets("L4").Visible = True 

但仍然只有21行得到更新

更新:这是在每张纸上运行的代码

endval = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 1 To endval 
    If Not Sheets("FT Raw").Cells(i, "A") = "" Then 
     splitted = Split(Sheets("FT Raw").Cells(i, "A"), ",") 
     Sheets("FT Raw").Cells(i, "B") = splitted(0) 
     Sheets("FT Raw").Cells(i, "C") = splitted(1) 
     Sheets("FT Raw").Cells(i, "D") = splitted(2) 
     If Sheets("FT Raw").Cells(i, "D") = "1" Then 
      Sheets("L1").Cells(j, "A") = Trim(splitted(0)) 
      Sheets("L1").Cells(j, "B") = Trim(splitted(3)) 
      j = j + 1 
     End If 
    End If 
Next i 
+1

我们需要查看更新工作表的代码。通常也没有必要让这些表单可见。 – SWa

回答

1

确定编辑。您需要在endval calc中指定工作表(“FT Raw”)。

试试这个集合endval = Sheets("FT Raw").Cells(Sheets("FT Raw").Rows.Count, 1).End(xlUp).Row并继续您的代码的其余部分。

(你也可以使用endval = Sheets("FT Raw").UsedRange.Rows.Count只有如果没有空白单元格的列的顶部)

幸运最后,你不必在所有这些取消隐藏表来运行代码。尽一切办法来进行调试,但在怒气中运行时并不是必需的。

+0

当运行未隐藏的表单时,完整的代码功能完美无缺,一直计数到1000行。只有隐藏时,它会在20行后停止,这是什么使我困惑。 – dojogeorge

+0

我怀疑这是因为你在“FT Raw”中运行它时,它被隐藏了。您在“FT Raw”隐藏时正在运行的* active *工作表上有多少行? – CuberChase

+0

这似乎越来越接近,如果我运行与FT Raw未隐藏和L1/L2/L3/L4表隐藏然后它工作正常。以前活动工作表是一个数据透视表。有针对这个的解决方法吗? – dojogeorge

0

这与隐藏床单无关 - 即使是床单是隐藏的,你仍然可以用VBA修改它。 (只有当它是受保护的,则需要取消保护它。)

Lookig你的代码,我没有看到,其中j初始化 - 以及在哪些情况列d在您的工作表FT raw等于"1"

我建议你在顶部初始化j,如果你想使用

 
j = Sheets("L1").Range(Rows.Count, 1).End.(xlUp).Row + 1 

然后,添加行与自动筛选运行在您的原始表的宏(支票),滤柱d的值1之后,看看是否条目的数量相匹配在表L1

+0

我之前在代码中初始化它,我没有把它放到原来的文章中,因为我认为它没有必要显示。列“D”在多个地方等于1,但似乎不涉及为什么只发现其中20个 – dojogeorge

+0

尝试调试它然后:通过代码F9并且如果跳过一行,请查看该值。或者,添加else语句'Else Debug.Print Sheets(“FT Raw”)。单元格(i,“D”)'查看跳过了什么值。 –