查找上一个填充的行,无需打开文件和条件

时间:2015-07-23 11:50:13

标签: excel vba

我想做什么:

i.   Locate an excel document using path and doc name √
ii.  Obtain the last filled row’s number with a spreadsheet name without opening the file X 
iii. Obtain the last filled row's number BEFORE a certain row number, X
     ex: last filled row before row 40. There may be filled cells between 45-52, 
     but I would like the function to return say "32" and not "52" like it does for me  

我有什么:

该文件的路径是经典目录+文件名,它们在具有宏的电子表格中的两个单独的单元格中编写。这是无关紧要的,只是为了表明File_Path =路径......

File_Path = Chr(34) & Server & "\" & Range(Workbook_Loc).Value  'That's step one

在位于File_Path的文件中,我希望进入名为MONTH YEAR的电子表格(例如:File_Path(“2015年7月”)),并找到最后一个填充行的编号。在第3行中,我尝试用B中的最后一行填充一个单元格。我知道网上有很多这个,但我无法以某种方式让它工作......:

Set wb = Workbooks.Open(File_Path) ' This should open my workbook
lastRow = wb(Chr(34) & Month & " " & Year & Chr(34)).Cells(1000, col).End(xlUp).Row 
Range(CurrentValue_Loc).Formula = "=INDEX('" & Server & "\" & Workbook & Month & " " & Year & "'!B" & lastRow & ",1)"

前面的代码在第二行停止;它打开位于File_Path的工作簿,并给出以下错误:

Run-time error '438'
Object doesn't support this property method

我做错了什么?

最后,对于我的iii。点(见上例),我试着这样做:

    lastRow = wb(Chr(34) & Month & " " & Year & Chr(34)).Cells(40, col).End(xlUp).Row 

但它仍然给我最后一行,即使它是在row40之后

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试查找最后一行时,不必再次键入工作簿的名称。只需使用您已设置的工作簿变量。

Sub lastRow()
    Dim lastRow As Long

    lastRow = wb.Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
    lastRow = wb.Sheets(1).Cells(40, 2).End(xlUp).Row
End Sub

只需使用您已声明的变量,然后使用Sheets() method来定义您在其中找到最后一行的工作表。在上面的示例中,我们在工作簿中找到第一个工作表的最后一行。