- ベストアンサー
エクセルvbaセル範囲について
困っております。 ご教授ください。 エクセルシート上に1~10の数字が列方向に並んでいます。 ユーザーフォームでtextbox1とtextbox2を作成します。 textbox1とtextbox2は1~10の間で範囲を入力します。 textbox2でエンターを押されたときに処理が開始します。 例えばtextbox1に「3」、textbox2に「8」が入力された場合、 3,4,5,6,7,8のセル範囲を選択したいのですがどのようにすればよろしいでしょうか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ユーザフォームから変数(Txtbx1, Txtbx2)への代入を知らないので、そこは自前でお願いします。 A列に並んでるものとします。 sub Macro1() Dim LastRow As Long Dim Txtbx1 As Long, Txtbx2 As Long, Flag As Long Dim myRange As Range Dim i As Long, j As Long Flag=0 LastRow=Cells(Rows.Count "A").End(xlUp).Row For i=Txtbx1 to Txtbx2 For j=1 to LastRow if Cells(j,"A").Value=i then If Flag=0 then set myRange=Cells(j,"A") Flag=1 Else set myRange=Union(myRange, Cells(j, "A")) End if End if Next j Next i myRange.Select End sub
その他の回答 (1)
- High_Score
- ベストアンサー率25% (45/176)
データの並んでいる行番号をmyRowにしておくので、好きな行番号を記入してください。 sub Macro1() Dim LastColumn As Long, myRow As Long Dim Txtbx1 As Long, Txtbx2 As Long, Flag As Long Dim myRange As Range Dim i As Long, j As Long myRow=2 Flag=0 LastColumn=Cells(myRow, Columns.Count).End(xltoLeft).Column For i=Txtbx1 to Txtbx2 For j=1 to LastColumn if Cells(myRow, j).Value=i then If Flag=0 then set myRange=Cells(myRow, j) Flag=1 Else set myRange=Union(myRange, Cells(myRow, j)) End if End if Next j Next i myRange.Select End sub
補足
早い回答ありがとうございます。 列と行を間違えてしまいました。 行方向に並んでいる場合はどのようになりますか。 お手数おかけしますが教えて下さい。 よろしくお願いします。