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 开头放在IF块中,那么练习效果很好。如果我在事后/外面立即放置它,它不会。你能帮我理解为什么吗?
我得到的错误(如果它在外面)是Object required
。这是Excel内部运作的一些错误吗?
我很困惑。非常感谢!
答案 0 :(得分:3)
为什么在tabD_WB
声明之外引用IF
时,您希望它能够正常工作?
除非您有更多代码未向我们展示,否则您只需在tabD_WB
语句中设置IF
,这意味着如果r <> "H"
该对象为空,则您不能访问空对象的范围。
答案 1 :(得分:1)
您可以编写代码
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条件不正确,那么就没有工作簿对象?