0

我编写了一个宏,它获取一些源数据并将其写入几张纸,在宏运行之前和之后保持隐藏状态。编写完宏后,当我运行它时,它只更新每张纸上的几条记录(例如,在第一个隐藏的纸上,它更新了 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
4

2 回答 2

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 在列顶部没有空白单元格时使用)

最后幸运的是,您根本不必取消隐藏这些工作表即可运行代码。无论如何,这样做是为了调试,但在愤怒中运行时,这是没有必要的。

于 2013-01-22T11:39:47.093 回答
0

这与工作表的隐藏无关——即使工作表被隐藏,您仍然可以使用 VBA 对其进行修改。(仅当它受到保护时,才需要取消保护。)

看看你的代码,我看不到,在哪里j初始化 - 在什么情况下你的工作表中的 D 列FT raw等于"1".

我建议您在顶部初始化 j,例如,如果您想使用添加行

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

然后,在运行宏(进行检查)后,使用自动过滤器过滤原始工作表中的 D 列以获取值1,并查看它是否与 sheet 中的条目数匹配L1

于 2013-01-22T11:38:42.103 回答