【问题标题】:Find Row Macro Clarification查找行宏说明
【发布时间】:2014-05-24 19:26:18
【问题描述】:

我查看了几个关于使用宏在电子表格中查找最后一行/单元格的主题,我有几个问题。

首先,下面的代码是只返回一个行值还是整个单元格值(“1”或“A1”)?

Dim TOS As Long
TOS = Range("A1").Row

或者,除了显而易见的(它们从底部开始并找到最后一个单元格加 1 的事实)之外,这些其他代码之间是否有区别(它们将如何显示或提取数据)?我只需要最简单的(或最好的,如果你有一个好的论据)只返回行(而不是单元格)。

答)

Dim TOS As Long
TOS = Range("A65536").End(xlUp).offset(1,0).Row

B.)

Dim TOS As Long
With Application.Workbooks("Test").Sheets(1)
   If WorksheetFunction.CountA(Cells) > 0 Then
       TOS = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
End If

C.)

Dim TOS As Long
TOS = Range("A65536").End(xlUp).Row + 1

仅拉行背后的要点是我有两个不同的表,我已在同一个工作表上取消合并。我需要删除有数据的列之间的空白列。它不会让我简单地使用“删除空白单元格”代码删除空白单元格。我假设这是因为在顶部表格中,一列可能有空白单元格,但在底部表格中,同一列可能有数据。如果您可以解释如何使“删除空白单元格”代码起作用,那可能会更容易,除了,我需要它只删除列中的空白单元格,而不是行,因为我需要保持表格分开。

我需要回答的第二件事是,如果我将一列和一行放在一起,一个使用公式(行)中的值,另一个我假设为字符串,我将如何去做?

例如)

Range("B" & TOS:"B" & TOE).Select

TOS 和 TOE 是我的行值,我需要选择 B 列中这些行的所有单元格。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    帮助系统确认Row

    返回范围内第一个区域的第一行的编号。

    所以它只是一个(长)数字。

    如果你想获得对行本身的引用,那么:

    Dim rng As Range
    Set rng = Range("A1").EntireRow
    

    A) 和 C) 相同,但它们找到 A 列的最后一行,而 B) 找到工作表最后使用的行(不仅仅是 A 列)。

    你的代码应该是:

    Range("B" & TOS & ":B" & TOE).Select
    

    引号内有冒号“:”(和另一个&符号)。 (不过还有其他写法。)

    删除一个单元格,而不是整行:

    Range("A1").Delete xlShiftUp
    

    【讨论】:

    • 另外,A & C 会找到最后一个可见行,而 B 会找到最后一行,即使该行是隐藏的。
    • 你帮了很多忙,但现在我很好奇 Row 和 EntireRow 之间的区别。整行和行之间返回的 Range 对象有什么区别?另外,当您谈论获取行的引用时,您的意思是我无法通过使用Dim TOS As Long 来获取它吗?
    • @RonRosenfeld 如果LookIn:=xlFormulas 则为真 - 但如果LookIn:=xlValues 则不是(或者如果此参数未指定但最后以xlValues 运行,则为xlValues
    • @brettdj 我没有意识到这一点。谢谢
    • @CSSWormy 这是一个新的、具体的问题,因此您应该开始一个新主题并提供任何错误消息的详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多