2017-02-08 26 views
1

我想設置一個已經選擇的單元格的範圍有沒有辦法做到這一點?如何設置在那個時候選擇的單元格的範圍

Range("e2").Select 
    Range(Selection.End(xlToRight), Selection.End(xlDown)).Select 
    Range(Selection, Selection.End(xlToLeft)).Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Set temprange = activeselection 

我不得不選擇這種方式,因爲在片有沒有在所有的列中的數據始終,但E就必須在第2行中的數據啓動時,它做工精細,但我需要將其設置爲在其他範圍內傳遞過濾器。

Activeselection太容易了,所以我應該知道它不會以這種方式工作.. 什麼是正確的方法來做到這一點?由於

+0

'設置temprange = Selection' - 但請三思(然後兩次以上)建立了大量的代碼周圍'Select'或'Activate'之前。 (例如,你是否只是想設置temprange = Range(「E2」)CurrentRegion?) – YowE3K

+0

它同時適用於選擇和當前區域。謝謝,他們有什麼不同?我怎樣才能將你的評論標記爲答案? :D – Hahasiah

+0

從理論上講,你的問題的答案只是我評論中的「Set temprange = Selection」部分(所以你可以標記@ Michael的答案是正確的)。我懷疑你當前使用的'Select'語句是否總是以'CurrentRegion'結尾,這樣我的評論部分與這個問題無關,而只是對你應該做什麼的建議。盡力去實現你想做的事情。 – YowE3K

回答

2

如果要引用到已選定單元格,只需使用選擇參考:

Set temprange = Selection 

注意,它通常是最好避免在VBA使用選擇其中具有範圍可能和簡單的工作。它可能爲你重寫代碼在所有選擇到不行:

Set temprange = Range(Range("E2").End(xlToRight), Range("E2").End(xlDown)) 
Set temprange = Range(temprange, temprange.End(xlToLeft)) 
Set temprange = Range(temprange, temprange.End(xlToRight)) 

你也許還簡化了這一進一步使用偏移量自動包括2分額外的列在右邊。請參閱下面的文章,有關如何參考範圍在VBA的詳細信息:

https://msdn.microsoft.com/en-us/library/office/gg192736(v=office.14).aspx

0

一種選擇是提供這樣的選擇,選擇範圍給用戶,以已填充爲默認的當前選擇:

代碼

Sub GetRng() 
Dim rng1 As Range 
On Error Resume Next 
Set rng1 = Application.InputBox("pls select range", "Set Range", Selection.Address, , , , , 8) 
On Error GoTo 0 
If rng1 Is Nothing Then MsgBox "User cancelled", vbCritical 
End Sub 
相關問題