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_WB内で設定するだけです。つまり、オブジェクトが空の ifであり、空のオブジェクトの範囲にアクセスすることはできません。IFr <> "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

コードのどこかで宣言uRangeしたと思いますか?Rangeまた、IF条件が真でない場合、ワークブックオブジェクトはありませんか?

于 2012-10-02T21:04:17.677 に答える