Excel VBA中工作簿工作表最后一个单元格运行错误

Excel VBA中工作簿工作表最后一个单元格运行错误,excel,vba,Excel,Vba,亲爱的, 有人能告诉我为什么停止此代码并显示错误消息(运行时错误“9”:下标超出范围) 代码片段: CollectFileName = "C:\Users\g\Documents\CAFM\VBS\access.xlsx" Workbooks.Open (CollectFileName) ActiveWindow.Visible = False LastDayRow = Workbooks(CollectFileName).Sheets(1).Range("B" &

亲爱的, 有人能告诉我为什么停止此代码并显示错误消息(运行时错误“9”:下标超出范围)

代码片段:

CollectFileName = "C:\Users\g\Documents\CAFM\VBS\access.xlsx"

    Workbooks.Open (CollectFileName)
    ActiveWindow.Visible = False

LastDayRow = Workbooks(CollectFileName).Sheets(1).Range("B" & Rows.Count).End(xlUp).Row

使用工作簿指定工作表时,您还应该对
行进行相同的操作。计数
(以及其他,如
单元格()
,列()
行()
,等等):

LastDayRow=工作簿(CollectFileName).Sheets(1).Range(“B”和工作簿(CollectFileName).Sheets(1).Rows.Count).End(xlUp).Row


使用工作簿指定工作表时,您还应该对
行进行相同的操作。计数
(以及其他,如
单元格()
,列()
行()
,等等):

LastDayRow=工作簿(CollectFileName).Sheets(1).Range(“B”和工作簿(CollectFileName).Sheets(1).Rows.Count).End(xlUp).Row


您要查看的工作表实际上称为“1”还是称为“工作表1”。这可以解释为什么它认为它超出了范围,如果名称不正确的话。你说的是不存在的东西。@Gallus它确实存在
1
是图纸集合的索引号。您试图查看的图纸实际称为“1”还是称为“图纸1”。这可以解释为什么它认为它超出了范围,如果名称不正确的话。你说的是不存在的东西。@Gallus它确实存在
1
是Sheets collection.FWIW的索引号-虽然这可以解决问题,但下标超出范围是因为OP将完整字符串
“C:\Users\g\Documents\CAFM\VBS\access.xlsx”
传递到
工作簿中,而不仅仅是
“access.xlsx”
。通过分配变量
wb
可以避免这种情况。
With
块是添加的“良好实践”。@ScottCraner-感谢您的澄清!你是对的。“wb”是解决方案。感谢大家的帮助。FWIW-尽管这将解决问题,但下标超出范围是因为操作将完整字符串
“C:\Users\g\Documents\CAFM\VBS\access.xlsx”
输入
workbook
而不是只将
“access.xlsx”
。通过分配变量
wb
可以避免这种情况。
With
块是添加的“良好实践”。@ScottCraner-感谢您的澄清!你是对的。“wb”是解决方案。谢谢大家的帮助。
CollectFileName = "C:\Users\g\Documents\CAFM\VBS\access.xlsx"
Dim wb as Workbook
Set wb = Workbooks.Open(CollectFileName)

With wb.Sheets(1)
    lastDayRow = .Range("B" & .Rows.Count).End(xlUp).Row
End With