1

次のコードがあります。

sub test()
list1 = Sheets(1).Range("a2", Range("a2").End(xlDown)).Rows.Count
list2 = Sheets(2).Range("a2", Range("a2").End(xlDown)).Rows.Count

MsgBox list1
MsgBox list2
end sub

問題があるシートから離れたときに、解決策を作成しました。

Sub tester()

Dim list1 As Range

With ActiveWorkbook

Set list1 = .Worksheets("Sheet1").Range("a2")
Set list1 = Range(list1, list1.End(xlDown))
MsgBox list1.Rows.Count

End With
End Sub

上記はlist1の例ですが、これはやり過ぎのようです。私は何か間違ったことをしていますか、アクティブ化されていない参照にいくつかの設定がありますか? 私はExcel2013を持っているので、Microsoft Officeオブジェクトライブラリ15を持っていますか?? ありがとう

4

1 に答える 1

1

シートから離れたときに問題が発生しました

はい。オブジェクトを完全に修飾していません

これを試してください(未テスト)

Sub test()
    list1 = Sheets(1).Range("a2", Sheets(1).Range("a2").End(xlDown)).Rows.Count
    list2 = Sheets(2).Range("a2", Sheets(1).Range("a2").End(xlDown)).Rows.Count

    MsgBox list1
    MsgBox list2
End Sub

そうは言っても、私の好みの作業方法は、オブジェクトを宣言してからそれらを操作することです

したがって、上記のコードは (UNTESTED) のように記述できます。

Sub test()
    Dim wb As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim list1 As Long, List2 As Long

    Set wb = ThisWorkbook

    Set ws1 = wb.Sheets(1)
    Set ws2 = wb.Sheets(2)

    list1 = ws1.Range("A2", ws1.Range("a2").End(xlDown)).Rows.Count
    List2 = ws2.Range("a2", ws2.Range("a2").End(xlDown)).Rows.Count

    MsgBox list1
    MsgBox List2
End Sub
于 2013-09-13T12:03:18.163 に答える