2016-06-22 124 views
0

我一直在看這段代碼,似乎無法弄清楚爲什麼我不斷收到一個對象所需的錯誤。我試圖在工作表中添加一個新工作表,地點和數組以及範圍(這是可行的)。接下來,我想命名工作表中的所有單元格,以後使用一個變量名稱。任何人都可以看到爲什麼它不工作?Excel VBA對象所需的錯誤

Set WS_Temp = Sheets.Add 
With WS_Temp 
    .Range(Cells(1, 1), Cells(1, LastColRA)) = Sheet1.Range("Dynamic_Range").Value 
    .Range(Cells(2, 1), Cells(counter + 1, LastColRA)) = Application.Transpose(vList) 
    '.Range(Cells(1, 1), Cells(counter + 1, LastColRA)) = Selected_Range 
    '.Range(Selection, Selection.SpecialCells(xlLastCell)).Select = Selected_Range 
End With 

Set Selected_Range = WS_Temp.Range(Selection, Selection.SpecialCells(xlLastCell)).Value ***ERRORS HERE 
+0

我已經Dimed WS_Temp作爲工作表和Selected_Range作爲範圍較早.. FYI – Liz

+2

你可以嘗試脫掉'.Value'? –

+0

[不要使用'.Select'](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros),這可能是其中的一部分。另外,最後不要使用「Value」。您只需設置Range(),然後如果您需要範圍的值,請執行「Selected_Range.Value」。 – BruceWayne

回答

1

Can you try taking off the .Value? – Matt Cremeens

Set關鍵字用於分配對象引用。使用它來分配的值會引發您收到的錯誤「Object required」。

這就是你在做什麼在這裏:

Set Selected_Range = WS_Temp.Range(Selection, Selection.SpecialCells(xlLastCell)).Value 

你試圖分配Selected_Range對象WS_Temp.Range(...)的價值,你不能合法地做。刪除.Value,您將分配Selected_Range a 參考指向您的WS_Temp表單上由Range調用返回的Range對象。

+0

我得到運行時錯誤'381'無法設置Column屬性。無效的屬性數組索引 – Liz

+0

@Liz在這裏沒有repro,或許'Selection'需要首先驗證?在這裏工作很好。 'Range'是'Worksheet'的一個參數化的'Property Get'成員;得到那個錯誤意味着你給它無效的參數。驗證'Selection'是否在'WS_Temp'表單中。 –

+0

*假設您在該特定行上發生該錯誤。避免出現問題,避免使用'Selection',查看@BruceWayne給你的鏈接帖子。 –