gpt4 book ai didi

VBA LastRow 计算不起作用

转载 作者:行者123 更新时间:2023-12-02 10:49:38 24 4
gpt4 key购买 nike

我有一个工作表,其中包含从单元格 B3 开始的自动筛选范围。 A 列包含一些宏按钮,但实际上是空白的。前两行包含有关主范围内数据的信息。

在 VBA 中,我使用我认为是确定工作表中最后一行的标准方法(在这种情况下,我不能依赖单列上的 .End 方法):

LastRow = Activesheet.Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row

但是,有时这会返回值 1,即使我有数千行数据。似乎只有在设置了过滤器时才会执行此操作(但仍然存在包含数据的可见行),但即使如此,它也并不总是发生,而且我看不到它的模式。

我知道还有其他解决方案 - 我已改为使用 UsedRange 技术,但令人非常沮丧的是,这个特定的解决方案失败了,因为否则在这种情况下它可能是最有效的解决方案。

有谁知道为什么会发生这种情况吗?

最佳答案

您是否想过使用格雷格的答案,但循环查找所有列的最高行?像这样的东西:

LastRow = 1
With ActiveSheet
For i = 1 to .UsedRange.Columns.Count
If .Cells(.Rows.Count, i).End(xlUp).Row > LastRow Then
LastRow = .Cells(.Rows.Count, i).End(xlUp).Row
EndIf
Next i
End With

此解决方案允许在底行中随机填充空白值。 usedRange 很棘手,因为它将返回曾经编辑过的最远的外围行/列(即使当前为空白)。根据我的经验,如果您在工作表中按 Ctrl-Up,Range.End(xlUp) 的行为与您所期望的一样。这更容易预测一些。

如果您决定使用 .Find,请尝试查看 After:=[A1] 参数。我还没有探索这个函数的特性,但是考虑到这个问题,这将是我开始的地方。

关于VBA LastRow 计算不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com