• ベストアンサー

エクセルのマクロで範囲を選択するマクロ

教えてください。 下記の通り、例えばA列の2~5にデータが入っている場合に、B2~D5の範囲を選択するマクロを教えてください。 A列のデータが入っている行は可変です。   A B C D E 1  2 6 3 7 4 9 5 10 6 7

質問者が選んだベストアンサー

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

Sub Sentaku()   ul = Range("A1").End(xlDown).Row '上のデータ行   ll = Range("A65536").End(xlUp).Row '下のデータ行   Range("B" & ul & ":D" & ll).Select End Sub

takechan55
質問者

お礼

舌足らずの質問にもかかわらず、ドンピシャの回答を頂きました。 上のデータ行は一定なのですが、下のデータ行を最下方からEndupして、列数を調べるやり方は、自分のやり方に合ってました。 既に入力済みのデータ行を含めての範囲設定は、分かってましたが、含めない範囲を設定する仕方が参考書を見ても分からず、困ってました。 それに、頂いた回答は、応用が聞くと思いますので、助かります。

その他の回答 (3)

  • 374649
  • ベストアンサー率38% (203/527)
回答No.4

単純で簡単やりかたですが。 開始行と終行が判っているということで。 F1に開始行数(2)、G1に終行数(5)を入力してマクロを実行します。 Sub 選択() Dim rg As String Dim StartNo As String Dim EndNo As String StartNo = Range("F1") EndNo = Range("G1") rg = "B" + StartNo + ":" + "D" + EndNo Range(rg).Select End Sub セルを変数代入値として使えば色々応用が利きます、BとDも同じ様に変数を使えば簡単で自由に範囲を選択できます。

takechan55
質問者

お礼

ご免なさい!質問の仕方が悪くて。 開始行は一定ですが、終行は不定なんです。 マクロの前段があって、A列のデータは別のデータ表から抽出・貼付けします。B~D列はA列の数値を利用した計算式(別の所に記載したもの)をコピペしたかったわけです。 でも、お教えいただいたマクロも別のところで使えそうです。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >例えばA列の2~5にデータが入っている場合に、 「例えば」っていうのは、それ以外もあるというわけですね。  A列の1 行目からある場合、  A列のデータが途中で間が空いている場合、  A列のデータが1行しかない場合、  A列のデータが数式の場合  A列のデータが、文字列と数字、数式が混在の場合  A列が何もない場合   までは、想定範囲とします。 '------------------------------ Sub Test1()   Dim i As Variant   Dim k As Variant   Dim j As Long      On Error Resume Next   With ActiveSheet   If WorksheetFunction.CountA(.Columns(1)) = 0 Then Exit Sub     j = .Cells(.Rows.Count, 1).End(xlUp).Row     Set r = .Range(.Cells(1, 1), .Cells(j, 1))     With r.SpecialCells(2, 23)       i = .Areas(1).Cells(1).Row     End With     With r.SpecialCells(-4123, 23)       k = .Areas(1).Cells(1).Row     End With     If Not (IsEmpty(i) Or IsEmpty(k)) And k < i Then i = k     If IsEmpty(i) Then i = k     On Error GoTo 0          .Cells(i, 2).Resize(j - i + 1, 4).Select   End With End Sub

takechan55
質問者

お礼

舌足らずの質問で、ご免なさい! 小生、マクロはマクロの記録を継ぎ接ぎして使っているレベルです。 お蔭様で何人かの方から、回答いただいて、一番簡単なものを使わせていただきました。 頂いた回答は、小生の理解のレベルをはるかに超えておりました。 もっと勉強しないければ、と思います。 ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Range("A:A").SpecialCells(xlCellTypeConstants, 1).Offset(, 1).Resize(, 3).Select とか。

takechan55
質問者

お礼

質問が簡略しすぎで、実際の表は、もちょっと複雑で、頂いた回答を、どう生かすか奮闘中です。 ありがとうございました。

関連するQ&A