2016-04-26 72 views
0

我做了一些調查,發現my question。問題在於它是爲一些我不熟悉的C語言編寫的。並不是說我對VBA都很熟悉,但是這正是我所從事的工作,並做了一件很好的工作。因此,爲了阻止我的能力將事情搞砸,而讓事情發揮作用,我如何從用戶選擇的列傳遞子範圍或列?如何通過選定範圍的列

所以在我的示例代碼中,我試圖傳遞所選內容的整個第一列。假設用戶範圍是B34:D40,我想通過B34:B40,這樣安排的是B34:B40。

Sub initialsub (userrange as range) 

Call secondfunction (userrange([],1) 

end sub 
---------------------------------------------------------------- 
function secondfunction (arrange as range) as long 

some function that counts a variety of things in a single column 

secondfunction = 45 

end function 
+0

hmm。所以如果範圍是'A10:B20',你想要'A10:A20'? – findwindow

+0

正確!或者如果用戶選擇了B34:D50,我想通過另一個變量,函數或語法B34:B50傳入呼​​叫。我剛剛擺脫了使用A列,因爲它是絕對參考以及相對的第1列。 –

回答

1

方式一:

Sub dural() 
    Dim FirstColumn As Range 

    Set FirstColumn = Intersect(Selection(1).EntireColumn, Selection) 
    MsgBox FirstColumn.Address 
End Sub 

enter image description here

另外:

Sub dural() 
    MsgBox Selection.Columns(1).Address 
End Sub 

似乎這樣的伎倆。

+0

有沒有使用選擇的方法?現在我正在通過從一個sub調用它並通過一個硬編碼範圍來測試代碼。因爲我的測試小組沒有選擇。當實際選擇可用時,我喜歡這種方法。我確實同意這正是我在問題的標題中所說的! –

+0

會'相交(userrange(1).entirecolumn,userrange)'如果我傳遞B34:D40作爲userrange?相交的結果是B34:B40? –

+1

@ForwardEd是.............它應該適用於任何「塊式」範圍。 –