查找Excel工作表中的最后一个单元格?

时间:2014-07-07 14:22:00

标签: excel vb6

我正在使用vb6并将数据复制到Excel工作表。我需要做的是将数据附加到现有工作表。我正处于需要找到工作表中最后一个单元格的索引编号的位置(那里只有一个工作表。)我尝试了一些像oBook.range.cells.specialcells(xllastcell)这样的东西,但无济于事。我现在要打开我想要的工作表就是这个

If Not Dir(strPath) = "" Then
Set oExcel = CreateObject("Excel.application")
Set oBook = oExcel.workbooks.open(strPath)

但是我不知道该怎么做才能找到工作簿中的最后一个单元格。

3 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。我最喜欢的方式是:

count = Application.CountA(Range("A:A")) 'you must use whatever column will give an accurate count

"计数"然后将是包含数据的最后一行。

答案 1 :(得分:0)

在网上搜索答案时,我发现了一行有效的代码。我必须将一些值更改为xlbyrows到" 1"和xlprevious到" 2"因为vb6 dows不能识别这些术语但可以使用数字常量。

这是原始的代码行

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

这是我将其改为使用我的代码

的内容
iCell = oExcel.cells.find("*", searchorder:=1, searchdirection:=2).row

答案 2 :(得分:0)

来自的信息 http://msdn.microsoft.com/en-us/library/aa139976%28v=office.10%29.aspx。 它涉及VBA,但它可能会帮助你。 这是一个旧的参考,但在这方面是有效的。

看下 最后一个小区 。 特别是,

“最后一个单元格被认为是工作表中包含信息的最高编号行与工作表中包含信息的编号最高的列的交集.Excel还包括在当前会话期间包含信息的单元格,甚至如果您已删除该信息。在保存工作表之前,不会重置最后一个单元格。

Excel认为格式化的单元格和未锁定的单元格包含信息。因此,您经常会发现最后一个单元格远远超出包含数据的区域,特别是如果工作簿已从其他电子表格应用程序(如Lotus 1-2-3)导入。如果只想考虑包含数字,文本和公式形式的数据的单元格,可以使用以下代码:

Sub GetRealLastCell()
  Dim lRealLastRow As Long
  Dim lRealLastColumn As Long
  Range("A1").Select
  On Error Resume Next
  lRealLastRow = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, _
                                               xlPrevious).Row
  lRealLastColumn = Cells.Find ("*",Range("A1"), xlFormulas, , _
                                    xlByColumns, xlPrevious).Column
  Cells(lRealLastRow, lRealLastColumn).Select
End Sub

另见this