错误9 VBA – 下标超出范围出现其他所有运行

下面的代码位于我的访问数据库中,一半时间运行良好。 另一半给我:“错误9下标超出范围”,它突出了“设置WKS = Workbooks(…”行作为问题,我知道问题在于它不确定它参考哪个工作簿但是我不知道该怎么做才能使之更清楚。

Sub fixborderss() Dim WKS As Excel.Worksheet Dim lastrow As Long Set WKS = Workbooks("L3 PSR.xls").Worksheets("L-3 Project Status Report") lastrow = Range("I" & WKS.Rows.Count).End(xlUp).Row WKS.Range("A8:V" & lastrow).Borders(xlEdgeTop).Color = RGB(191, 191, 191) WKS.Range("A8:V" & lastrow).Borders(xlEdgeBottom).Color = RGB(191, 191, 191) WKS.Range("A8:V" & lastrow).Borders.LineStyle = xlContinuous End Sub 

根据代码的构build方式,您有几个选项:

1)让XL成为一个公共variables:

 Public XL As Excel.Application '// Declare at top of module, outside of any subs/functions 

2)将Excel传递给其他子:

 Set XL = New Excel.Application '// ... more code My_Other_Sub XL '// Call sub and pass Excel object '// Some more code End Sub Public Sub My_Other_Sub(ByRef XL As Excel.Application) Set ws = XL.Workbooks(1).Sheets(1) '// Other code End Sub 

3)如果Excel已经打开,使用GetObject()方法。

 Set XL = GetObject(, "Excel.Application") If Not XL Is Nothing Then Set ws = XL.Workbooks(1).Sheets(1) End If