0
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内部工作的一些错误吗?

我很困惑。非常感谢!

4

2 回答 2

3

tabD_WB当在声明之外提及时,您为什么希望它起作用IF

除非您有更多未向我们展示的代码,否则您只能tabD_WBIF语句中设置,这意味着对象为空 if r <> "H",并且您无法访问空对象的范围。

于 2012-10-02T21:00:14.203 回答
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

我希望您已在代码中声明uRangeRange某个地方?此外,如果 IF 条件不成立,那么不会有工作簿对象吗?

于 2012-10-02T21:04:17.677 回答