プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

Sub Sentaku()


  ul = Range("A1").End(xlDown).Row '上のデータ行
  ll = Range("A65536").End(xlUp).Row '下のデータ行
  Range("B" & ul & ":D" & ll).Select
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/28 14:31

単純で簡単やりかたですが。



開始行と終行が判っているということで。

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も同じ様に変数を使えば簡単で自由に範囲を選択できます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/28 13:20

こんにちは。



>例えば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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/28 13:32

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



とか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/28 14:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!