如何在VBA代码中嵌入'lastrow' Note: HTML标签和引号或双引号内的内容不需要翻译。

14 浏览
0 Comments

如何在VBA代码中嵌入'lastrow' Note: HTML标签和引号或双引号内的内容不需要翻译。

如何找到特定列上特定工作表中包含数据的最后一行?

0
0 Comments

问题的原因是需要在VBA代码中嵌入一个名为"lastrow"的变量来获取Excel表格的最后一行。解决方法是使用以下代码来实现:

Dim lastRow as Long
Range("A1").Select
lastRow = Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row

这段代码首先选中单元格"A1",然后使用`Cells.Find`函数来查找表格中最后一个非空单元格的行号,并将其赋值给变量"lastRow"。

使用示例:

Cells(lastRow,1) = "Ultima Linha, Last Row. Youpi!!!!"
'或者
Range("A" & lastRow).Value = "FIM, THE END"

这个例子展示了如何使用"lastRow"变量来在指定的行中插入文本。

另一种方法是创建一个函数来获取指定工作表的最后一行。代码如下:

Function getSheetLastRow(sheet2Check As Worksheet)
    lastRow = sheet2Check.Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row
    getSheetLastRow = lastRow
End Function

这个函数可以在其他VBA代码中使用,通过传入要检查的工作表对象,可以得到该工作表的最后一行。

虽然这个解决方法不局限于特定的列,但它使用了`Select`函数,并在访问`Range`/`Cells`时没有指定工作表对象,这被认为是不良的编程风格。如果你坚持要使用`.Find`函数,那么"Siddharth Rout回答中的“在VBA中查找最后一个使用的单元格时出现错误”的“在工作表中查找最后一行”部分有一个更好的解决方案。

0
0 Comments

问题出现的原因是,VBA代码中需要嵌入一个名为"lastrow"的变量,用于确定Excel表格中的最后一行。然而,代码中使用的".End(xlup)"方法中,使用了固定的行数65536,这可能会导致在Excel 2007中出现问题,因为该版本的Excel拥有超过65536行。此外,代码中使用的xlUp是从列的末尾向上搜索的,类似于按下CTRL+UP键,因此在存在隐藏行的情况下(例如,开启了自动筛选功能),可能会产生错误的结果。

解决方法是,替换代码中的行数65536为sheetvar.Rows.Count。这样可以兼容Excel 2007及更高版本,因为sheetvar.Rows.Count会自动获取当前工作表的总行数。同时,需要注意的是,由于xlUp是从列的末尾向上搜索的,可能会产生错误的结果,尤其是在存在隐藏行的情况下。

0
0 Comments

问题的原因是,作者想要在VBA代码中嵌入一个名为'lastrow'的函数,该函数用于获取最后一行的行号。作者给出了两个解决方案,但是这两个方案都存在一些问题。首先,第一个解决方案在只有最后一行的单元格有数据时会返回错误的结果。其次,第一个解决方案在strColumn是数字、在第65536行有数据以及使用具有超过65536行的Excel 2007时会返回错误的结果。

为了解决这些问题,作者提到了一个名为"Siddharth Rout's answer to 'Error in finding last used cell in VBA'"的帖子。这个帖子详细介绍了两种方法,并指出了一些问题。同时,还有自己在这个问题中的回答,列举了一些可能导致意外后果的情况。

最后,作者表示对于这个问题一直在寻找的Cells.Find函数非常满意,因为它可以在任何地方查找使用的行的范围,而不需要确定列。

以上是作者提出问题的原因以及解决方法的整理。

0