我编写了一个宏来获取一些源数据并将其写入多张表格,这些表格在宏运行之前和之后都保持隐藏状态。编写宏之后,当我运行它时,它只更新每张表上的几条记录(例如,在第一张隐藏表单上它更新了超过1000条中的21行。这是怎么发生的?当然它应该全部更新或者没有一个?我也没有收到任何错误。我试过了
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
答案 0 :(得分:1)
好的编辑。您需要在endval calc中指定Sheet(“FT Raw”)。
尝试使用此设置endval = Sheets("FT Raw").Cells(Sheets("FT Raw").Rows.Count, 1).End(xlUp).Row
并继续执行代码的其余部分。
(如果列顶部没有空白单元格,您也可以只使用endval = Sheets("FT Raw").UsedRange.Rows.Count
幸运的是,您根本不必取消隐藏这些表格来运行代码。通过一切手段进行调试,但在愤怒中运行时则没有必要。
答案 1 :(得分:0)
这与隐藏工作表无关 - 即使隐藏了工作表,您仍然可以使用VBA对其进行修改。 (只有在受到保护的情况下,您才需要对其进行取消保护。)
查看您的代码,我看不到,j
初始化的位置 - 以及在哪种情况下,工作表FT raw
中的列D等于"1"
。
我建议您在顶部初始化j,例如如果要使用
添加行j = Sheets("L1").Range(Rows.Count, 1).End.(xlUp).Row + 1
然后,在运行宏(用于检查)后,使用自动过滤器过滤原始工作表中的列D,使其值为1
,并查看它是否与工作表L1
中的条目数相匹配。