0

別のワークシートからランダムなセルを選択しようとしています。コードがある現在のシートでランダムなセルを選択すると、次のコードが機能します。別のシートからランダムなセルを選択するにはどうすればよいですか?

Dim e
Static myList As Object
If myList Is Nothing Then
    Set myList = CreateObject("System.Collections.SortedList")
End If
If myList.Count = 0 Then
    Randomize
    For Each e In Range("D3:D32", Range("D" & Rows.Count).End(xlUp)).Value
        myList.Item(Rnd) = e
    Next
End If
MsgBox myList.GetByIndex(0)
myList.RemoveAt 0

これは私が別のシートから選択しようとしたものです。

Dim e
Static myList As Object
If myList Is Nothing Then
    Set myList = CreateObject("System.Collections.SortedList")
End If
If myList.Count = 0 Then
    Randomize
    For Each e In Workbooks("Test").Sheets("Sheet1").Range("D3:D32", Range("D" & Rows.Count).End(xlUp)).Value
        myList.Item(Rnd) = e
    Next
End If
MsgBox myList.GetByIndex(0)
myList.RemoveAt 0

私が間違っていることについての提案はありますか?

4

1 に答える 1

2

この行で:

For Each e In Workbooks("Test").Sheets("Sheet1").Range("D3:D32", Range("D" & Rows.Count).End(xlUp)).Value

Range への最初の呼び出しでは "Test" ワークブックを指定していますが、2 回目の呼び出しや Rows.Count では指定していません (ただし、これはおそらく同じです)。簡単な修正として:

For Each e In Workbooks("Book2").Sheets("Sheet1").Range("D3:D32", Workbooks("Book2").Sheets("sheet1").Range("D" & Workbooks("Book2").Sheets("sheet1").Rows.Count).End(xlUp)).Value

また:

With Workbooks("Book2").Sheets("Sheet1")
    For Each e In .Range("D3:D32", .Range("D" & .Sheets("sheet1").Rows.Count).End(xlUp)).Value
于 2013-10-17T12:38:40.080 に答える