Код нижче, що знаходиться в моїй базі даних доступу,проходить добре половину часу. Друга половина мені дає: "підпис під помилкою 9 поза діапазоном", і він виділяє як проблему рядок "Встановити WKS = Робочі книжки (...". Я знаю, що проблема полягає в тому, що вона не впевнена, на яку робочу книжку вона посилається. Однак я не знаю, що робити, щоб зробити це зрозумілішим.
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
Відповіді:
1 для відповіді № 1У вас є пара варіантів залежно від того, як побудований ваш код:
1) Зробіть XL
публічна змінна:
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) Використовуйте GetObject()
метод, якщо Excel вже відкритий.
Set XL = GetObject(, "Excel.Application")
If Not XL Is Nothing Then
Set ws = XL.Workbooks(1).Sheets(1)
End If