Vba 使用Do循环查找包含文本的最后一行

Vba 使用Do循环查找包含文本的最后一行,vba,Vba,请原谅我没有经验 我将编写一个函数,返回使用do循环返回COLLMN 1中非空字符串的最后一行 如果没有空行,您可以简单地执行以下操作: Public Sub MySub() Dim wsTarget As Worksheet Set wsTarget = ActiveSheet Dim n As Integer n = 1 Do While (wsTarget.Cells(n +1, 1).Value <> "") n

请原谅我没有经验


我将编写一个函数,返回使用do循环返回COLLMN 1中非空字符串的最后一行

如果没有空行,您可以简单地执行以下操作:

Public Sub MySub()

    Dim wsTarget As Worksheet
    Set wsTarget = ActiveSheet

    Dim n As Integer
    n = 1

    Do While (wsTarget.Cells(n +1, 1).Value <> "")
        n = n + 1
    Loop

    n = n - 1

    'n now contains the line number of the last non-empty row.

End Sub
Public Sub MySub()
将目标设置为工作表
设置wsTarget=ActiveSheet
作为整数的Dim n
n=1
执行While(wsTarget.Cells(n+1,1.Value“”)
n=n+1
环
n=n-1
'n现在包含最后一个非空行的行号。
端接头

编辑:对于本例,我假设您正在查看第一列,数据从第2行开始。如果没有包含数据的行,n将等于1。

您能给我们一个代码示例吗?您必须使用Do循环吗?如果这是家庭作业,您应该得到“a”,表示此任务完全不适合Do循环。:)您可以使用标准Excel函数或VBA解决此问题,您可以使用xlUp从底部查找或搜索第一个未使用的单元格。你永远不会使用Do循环。如果你想知道为什么,Do循环构造的问题是退出的条件可能永远不会为真。如果列中没有空行,当VBA到达最后一行并尝试选择以下单元格时,会出现错误,因为您超出了工作表的边界。此外,您必须读取每个单元格的值以进行测试!!!另一个更大的构造错误是do循环中的do循环:)使用嵌套循环根本不是构造错误,我真的不知道你为什么这么说。我编辑了你的
wsTarget
行以查看工作表而不是工作簿。作为默认值,NullString和“”都将接受带有
的单元格为空
IsEmpty
将正确地看到这样一个单元格是非空的。他需要一个返回值的函数,而不是一个子函数!是的,但他还需要创建一种新类型的对象,因为“collumn”不存在。我的观点是,这个解决方案给出了如何通过循环实现这一点的关键元素,而不是完整的解决方案。在实际的宏中,通常不会硬编码列号、第一行等内容。