• ベストアンサー

Selectした範囲の最終セルの1つ下を選択

よろしくお願いします。 Dim R As Range Dim rr As Range Set R = Columns("H").Find("○", After:=Range("H" & Rows.Count)) Set rr = Columns("H").Find("○", After:=R, SearchDirection:=2) Range(R, rr).Select で、Selectした範囲内の最終セルの1つ下を選択したいのですが ご存知の方、ご教示をお願いします。

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

  • ベストアンサー
回答No.1

色んなやり方があると思うのですが、 なんとなく覚えておきたい色々を含めて   Cells(Selection.Row + Selection.Rows.Count, Selection.Column).Select を挙げておこうかなぁ、こ思い立ちました。 一応、解説。   .Row  ⇒選択範囲の先頭行を返す   .Rows.Count  ⇒選択範囲の行の数を返す   .Column  ⇒選択範囲の先頭列を返す というのを組み合わせてます。 つまり、   先頭行+選択行数=選択範囲より一つ大きいはず ってことです。 列でも同様の考え方ですね。 組み込むなら・・   With Range(R, rr)     Cells(.Row + .Rows.Count, .Column).Select   End With 行方向だけ考えるなら、こんな感じでしょうか。 RowとRowsの違い・・・ですね(汗)。

1211M
質問者

お礼

tsubu-yuki 様 早速のご回答ありがとうございます。 希望通りできました。 これからもよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 並び替え

    たびたびお世話になります 選択範囲の並べ替えを行いたく こちらで教わった方法で セル位置の取得を行い Set r = Columns("A").Find("b1", lookat:=xlWhole, After:=Range("A" & Rows.Count)) Set rr = Columns("A").Find("bm123-1", After:=r, Searchdirection:=2) その取得した位置を元に並べ替えを行いたい 範囲選択をしています Range(r, rr.Offset(, 14)).Select その後並び替えを実施したいのですが Selection.Sort Key1:=Range(r.Offset(, 14)) この様にしてみましたが 実行時エラー1004が返されてしまいます どのようにすれば 並び替えができるのでしょうか よろしくお願いします

  • VBA 並び替え

    たびたびお世話になります 選択範囲の並べ替えを行いたく こちらで教わった方法で セル位置の取得を行い Set r = Columns(\"A\").Find(\"b1\", lookat:=xlWhole, After:=Range(\"A\" & Rows.Count)) Set rr = Columns(\"A\").Find(\"bm123-1\", After:=r, Searchdirection:=2) その取得した位置を元に並べ替えを行いたい 範囲選択をしています Range(r, rr.Offset(, 14)).Select その後並び替えを実施したいのですが Selection.Sort Key1:=Range(r.Offset(, 14)) この様にしてみましたが 実行時エラー1004が返されてしまいます どのようにすれば 並び替えができるのでしょうか よろしくお願いします

  • 左のセルと違った値だけを、他のセルに書き込む

    ワークシートの任意の「G列とH列」において、G列の値と違っていたら、 P列にその違った値だけを書き込む。 「違った値」の選択まではなんとかできましたが、それからがどうも進みません。 何卒ご教示お願い致します。 ------------ Sub tes1() Dim r As Range, base As Range Dim x, y Dim i Set r = Selection Set base = Selection.Cells(1, 1) x = r.Columns.Count y = r.Rows.Count Selection.RowDifferences(ActiveCell).Select ・ ・ --------------- G   H ・・・・P 98   94   98 101  101    91   95   91 69   69 71   71 99   95   99 89   89 94   94 67   67 68   64   68

  • Excel VBA セルの選択方法

    こんばんは。 セルの選択方法をお聞きしたいのですが、 SheetAのB2のセルの値を SheetBのリストの最下行(例えば12)からn行目(例えばn=3だったら12行目から15行目)を選択し、SheetAのB2のセルの値を貼り付ける方法を教えてください。 方法は複数あると思うのですが、考えにいきずまってしまいました。 Range("B2").Copy For i = 1 To n Worksheets("Sheet2").Range("b65536").End(xlUp).Offset(1).Select ActiveCell.Parse Selection..Resize(.Rows.Count + [n]).Select それと   Dim cntRow As Integer Dim cntCol As Integer cntRow = Selection.Rows.Count + 1 cntCol = Selection.Columns.Count + 1 Selection.Resize(cntRow, cntCol).Select 上のようなResizeを使って、表(例えばC3~E10)を貼り付けた隣のセル、(例えばB3~B10)のセル番地を取得して、 SheetAのB2のセルの値を貼り付ける方法も教えていただけないでしょうか。 基本的なことをお聞きするようですが、宜しくお願い致します。

  • 選択したセルの、画面最上行から1つ下のセルを選択

    EXEL 2002 です。 任意に選択したセルの、画面最上行から1つ下(Rows.Count = 2)のセルを選択する場合のコードですが、 どうも解りません。 何卒、よろしくお願い致します。 ----------------------- Cells(2, Selection.Columns.Count).Select

  • エクセルのセル高調整で指定したセルから下を調整

    エクセルのセル高調整で指定したセルから下を調整したいのですが。エクセルVBAで下記の方法でやるとすべてのセルがFITします。やりたいことは、3行目以降のセル全体をFITさせたいのです。 どこを追記したら良いか教えて下さい。 Sub セル高調整() 'Sheets("すべて")のセルの高さの調整 Dim lrow As Integer Dim km As Long Application.ScreenUpdating = False '画面の更新を停止 ActiveSheet.Select Range("b3").CurrentRegion.Select Selection.Rows.AutoFit lrow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row + 1 For km = 1 To lrow Rows(km).RowHeight = Rows(km).RowHeight + 10 Range("a3").Select Next km End Sub

  • 結合されたセルを列方向に検索したい

    excel2003 結合されたセルを列方向に検索したい Bセルで同じ文字列が入っているセルをダブルクリックすると、順繰りに検索する。 下記が、マクロの内容です。 ------------------------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Err GoTo Myerr: Dim MyRange As Range Dim FirstRow As Integer Application.EnableEvents = False If Target.Column = 2 And Target.Value <> "" Then If Target.Row = Range("B" & Rows.Count).End(xlUp).Row Then FirstRow = 1 Else FirstRow = Target.Row End If With Range("B" & FirstRow & ":B" & Range("B" & Rows.Count).End(xlUp).Row) Set MyRange = .Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) If FirstRow = Target.Row Then Set MyRange = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) MyRange.Select Else MyRange.Select End If End With End If Application.EnableEvents = True Myerr: Application.EnableEvents = True End Sub ------------------------------------------------------------------------- 上記内容で、単独セルであれば動作するのですが、 行方向に結合されている(B1とB2が結合されている)セルをダブルクリックすると 実行時エラー’13’: 型が一致しません。 というエラーが発生します。 上記マクロでどこを修正したらよいのか、教えていただきたく。 B列は、結合されたセル、単独のセルが混在しています。

  • マクロ 選択範囲と同一の範囲を違う列で選択する

    いつも回答して頂き感謝感謝です。 今回の質問ですが、下記のマクロで日付が入力されている列の範囲選択が出来ましたが、この選択範囲を元に列を任意に変更し同等の行範囲で選択したいのですがどうしたらよろしいでしょうか?思いつく範囲でマクロを記述しましたがさっぱりでした。御指導の程宜しくお願い致します。 ・B4から下方向に日付が連続で入力されている。 ・C3から右方向に商品名が入力されている。 ・上記の交差する箇所に商品の使用回数が入力されている。 Sub 範囲の選択5() Dim Date1 As Date Dim Date2 As Date Dim 商品名 As Variant Dim b1 As Variant Dim b2 As Variant Dim b3 As Variant With Worksheets("集計用") s1: Date1 = Application.InputBox("最初の日付を2012/12/1のように入力してください。") Set b1 = .Columns("B").Find(Date1, , xlValues, 1) If b1 Is Nothing Then MsgBox "入力した日付が見当たりません。再度入力して下さい。": GoTo s1 s2: Date2 = Application.InputBox("最後の日付を2012/12/31のように入力してください。") Set b2 = .Columns("B").Find(Date2, , xlValues, 1) If b2 Is Nothing Then MsgBox "入力した日付が見当たりません。再度入力して下さい。": GoTo s2 .Range(b1, b2).Select s3: 商品名 = Application.InputBox("商品名を入力して下さい。") Set b3 = .Rows("3").Find(商品名, , xlValues, 1) If b3 Is Nothing Then MsgBox "入力した日付が見当たりません。再度入力して下さい。": GoTo s3 .Range(b3).Select End With End Sub

  • 入力用のセルと管理用のセルを分けるには??

    Private Sub Worksheet_Change(ByVal Target As Range) Dim myC As String Dim x As Range   If Intersect(Target, Range("A1,C2,D4")) Is Nothing Then Exit Sub   Select Case Target.Address(0, 0)     Case "A1": myC = "E"     Case "C2": myC = "F"     Case "D4": myC = "G"   End Select   If Cells(Rows.Count, myC).End(xlUp).Value = "" Then     Set x = Cells(Rows.Count, myC).End(xlUp)   Else     Set x = Cells(Rows.Count, myC).End(xlUp).Offset(1)   End If   x.Value = Target.Value End Sub 入力用セルと、管理用のセルを分けたい・・・・・ という質問をしてこのマクロを教えていただいたんですが、 実際には入力用にしたいセルが、40箇所以上ありまして 一つ一つ反映させるのではなく、すべての箇所に入力して確認後に まとめて反映させたいのですが不可能でしょうか?? 何か方法があるようでしたらヨロシクお願いします!! エクセル2003です。

  • 文字列の逆検索

    VBAを勉強中の初心者です。 アから始まる文字があったら、逆から連続で検索して その都度、セルをselectしたいのですが どのように書いたらよいでしょうか? Dim a1 As string  Set a1 = Range("B3:B8").Find(What:="ア*", SearchDirection:=xlPrevious) Do  If Not a1 Is Nothing Then Set a1 = Range("B3:B8").FindPrevious(After:=a1) ・・・? お手数ですが、よろしくお願いいたします。

専門家に質問してみよう