从另一个工作表中select一个随机单元格

我试图从另一个工作表中select一个随机单元格。 如果我在代码所在的当前工作表上select一个随机单元格,以下代码将起作用。 我怎样才能从另一个工作表中select一个随机细胞?

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 

这是我试图从另一张表中select。

 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 

build议我做错了什么?

在这一行中:

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

您为第一次调用Range时指定了“Test”工作簿,但不是第二次调用,也不是Rows.Count(尽pipe这可能是相同的)。 作为一个快速修复:

 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