我正在編寫一個宏來執行復雜的複製/粘貼練習。從概念上講,這很簡單,但我陷入了一個地方。所有不同的數據塊都用不同的命名範圍來標識。我需要迭代這個名字列表,將每個名字作爲參數傳遞給一個函數(實際上是一個子例程,但是同樣的想法)。數據源位於一個工作簿中,而目標位於另一個工作簿中。Excel VBA:傳遞範圍名稱作爲函數參數
這裏是我有什麼(只是一個數據塊):
Private Sub copyABU()
copyPaste(ThisWorkbook.Names("myRange1").RefersToRange)
copyPaste(ThisWorkbook.Names("myRange2").RefersToRange)
copyPaste(ThisWorkbook.Names("myRange3").RefersToRange)
//etc
End Sub
Private Sub copyPaste(thisRange As Range)
Windows(someworkbook).Range(thisRange).Copy
Range(thisRange).PasteSpecial Paste:=xlPasteValues
End Sub
不幸的是,我得到這個運行時錯誤。我認爲有一個類型不匹配,但我不確定這一點,並不能找出我缺少的東西。任何人都可以看到爲什麼失敗? (我正在使用Excel 2010)。
謝謝!
感謝。我忽略了兩件事:首先,我只有一個源文件和一個目標文件,因此工作簿的名稱很簡單。其次,範圍名稱在兩個文件中都是相同的。所以需要傳遞給函數的唯一參數就是我在那個特定時刻處理的範圍名稱。如果我能做到這一點,其餘的應該很容易。即使你的建議,我仍然有同樣的問題,即我所做的只是一個「Hello World」消息框中,我不能讓參數傳遞到被調用函數。 – Alex
我想我明白了。我沒有嘗試將範圍作爲對象傳遞,而是將範圍的名稱作爲字符串傳遞,然後從此處繼續。似乎工作得很好。謝謝您的幫助!我很感激。 – Alex
也許你已經在上面看到了我的更新代碼,所以如果這對你有幫助,你可以關閉該案例。 THX PS:如果還有關於使用不同範圍的問題,請告訴我! – systrue