2013-10-17 36 views
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 

對我在做什麼錯的建議?

回答

2

在這一行:

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

你指定的「測試」工作簿的第一次調用範圍,而不是第二個電話,也不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 
+0

許多感謝。是的,我沒有在第二次通話中引用範圍。 – Muhnamana

相關問題