- ベストアンサー
選択した範囲を配列に格納
勉強はじめたばかりの超初心者です。 InputBoxメソッドを用いシートのなかからデータ処理をする範囲を選択 し、その選択した範囲の行数を求めようとしております。 下記の様にすればできることは承知しておりますが、選択した範囲の値 をSelectを用いずに直接配列に格納し、Ubound関数とかで行数を求める にはどうしたらよいのでしょうか。何かべつの変数を定義しVariantで 型宣言をしてといったところまでは想像つくのですが、それ以上がわかりません。ご教示いただけると幸いです。 Dim MotoN As Integer Public Sub データ範囲取得() Set MotoHani = Application.InputBox(Prompt:="元範囲を選択", Type:=8) MotoHani.Select MotoN = Selection.Rows.Count End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問のご趣旨がいまいちわかりませんが、最初の質問を額面通りに受け取って回答すると、次の通りです。外していたらすみません。 Public Sub データ範囲取得() Dim buf As Variant Dim motoHani As Range Set motoHani = Application.InputBox(Prompt:="元範囲を選択", Type:=8) buf = motoHani Debug.Print "rows count:"; UBound(buf, 1) Debug.Print "colomns count:"; UBound(buf, 2) End Sub
その他の回答 (2)
- NOBNNN
- ベストアンサー率50% (93/186)
下記のサンプルでうまく行きます。 実験確認済みです。 =========================<サンプル>======================= Dim MotoN As Integer Dim I As Integer Dim Cnt As Integer Dim MotoHani As Range Dim arys() As Variant Dim ary As Variant Public Sub データ範囲取得() Set MotoHani = Application.InputBox(Prompt:="元範囲を選択", Type:=8) MotoN = MotoHani.Rows.Count arys = MotoHani I = 0 For Each ary In arys I = I + 1 Debug.Print "ary(" & I & ")=" & ary Next ary End Sub =========================================================
補足
ありがとうございました。 検証の方法までご教示いただき感謝いたします。
- NOBNNN
- ベストアンサー率50% (93/186)
質問を具体的にお願いします。 ExcelのVBAでしょうか? それと、目的は何のためにとか理由を書いてください。 ただ単にROWの行数を求めるのであれば 3行目のSET の下に MOTON = MotoHani.ROWS.count の一行ですみます。
お礼
早速のご教示ありがとうございます。 確かにselectionはいりませんね。ばかな例ですみません。 目的は、EXCEL VBAの私の勉強のためです。InputBoxメソッドで取得 した範囲にあるデータを配列に格納する際に、例えばA2からB10を選択 した場合、 Dim Hani As Variant Hani=Range("A2","B10") といったやり方は存じております。 左上のセルの番地と右下のセル番地を取得したり、また左上のセル番地 と行数、列数から配列に格納するような方法もあるかと思います。 質問したい内容は例のようにRange型でデータの範囲が判っている場合 (例ではDataHani) これをデータの番地や行数、列数を引数としない 方法で、配列に格納させる方法を教えていただきたいというお願いで す。 Ubound関数ならば、配列を引数とするかと思い最初の質問といたしました。
お礼
ありがとうございます Variantで宣言した変数で単に=で置き換えれば 良いということですね。