我想做什么:
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之后
谢谢!
答案 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来定义您在其中找到最后一行的工作表。在上面的示例中,我们在工作簿中找到第一个工作表的最后一行。