2016-04-26 5 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のいずれかを使用して呼び出しを渡します。私はちょうど相対参照と同様に絶対参照の列1であるので、A列の使用を取り除きました。 –

答えて

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

選択を使用しない方法がありますか?今私は、サブコードから呼び出すと、ハードコードされた範囲を渡すことによって、コードをテストしています。そこに私のテストのサブとの選択が行われていません。実際の選択が利用可能な場合、私はこのメソッドが好きです。そして、私はこれがまさに私が質問のタイトルに述べたことに同意します! –

+0

は、私がuserrangeとしてB34:D40を渡していた場合、 'intersect(userrange(1).entirecolumn、userrange)'ですか?交点がB34:B40になりますか? –

+1

@ForwardEdはい............. "ブロックスタイル"のどの範囲でも機能します。 –