VBA对象所需的错误取决于代码安排
r = mainWS.Cells(count, 1).Value paths = mainWS.Cells(i, 2).Value pathd = mainWS.Cells(i, 6).Value ..... If (r = "H") Then Application.Workbooks.Open (pathd & "\" & filed) Set dWB = Application.Workbooks(filed) Set tabD_WB = dWB.Sheets(tabd & "") Application.Workbooks.Open (paths & "\" & files) Set sWB = Application.Workbooks(files) Set tabS_WB = sWB.Sheets(tabs & "") End If Set uRange = tabD_WB.Range(Cells(1, 1), Cells(5, tabD_WB.UsedRange.Columns.count))
所以,如果我把最后一行以Set uRange开始,那么这个练习就完美了。 如果我之后/之外立即放置它,它不会。 你能帮我理解为什么吗?
我得到的错误(如果它在外面)是Object required
。 这是Excel内部工作的一些错误?
我感到困惑。 非常感谢!
当tabD_WB
被引用到IF
语句的外部时,为什么你会期望它工作?
除非你有更多的代码没有显示给我们,否则你只能在IF
语句中设置tabD_WB
,这意味着如果r <> "H"
,那么这个对象是空的,而且你不能访问空对象的范围。
你可以写你的代码
Application.Workbooks.Open (pathd & "\" & filed) Set dWB = Application.Workbooks(filed) Set tabD_WB = dWB.Sheets(tabd & "")
如
Set dWB = Application.Workbooks.Open(pathd & "\" & filed) Set tabD_WB = dWB.Sheets(tabd)
现在关于你的错误,你还没有完全限定你的Cells()对象。 尝试这个
With tabD_WB Set uRange = .Range(.Cells(1, 1), .Cells(5, .UsedRange.Columns.Count)) End With
我希望你已经在你的代码中声明了uRange
作为一个Range
? 另外,如果IF条件不成立,那么将不会有工作簿对象?