- ベストアンサー
VBA EXCEL2003のセル選択方法
- EXCEL2003のVBAを使って、オートフィルタで抽出させた表において、入力されているセルの1つ下のセルを選択する方法
- Range関数を使用して、最終行を特定し、その下のセルを選択することで表全体の1つ下のセルを選択する
- 具体的なコードは、Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
たとえば: sub macro3() if activesheet.filtermode then with activesheet.autofilter.range .offset(.rows.count).cells(1).select end with else range("A65536").end(xlup).offset(1).select end if end sub かならずA1からオートフィルタが始まっているならもうちょい簡単にできます sub macro1() range("A1").offset(activesheet.autofilter.range.rows.count).select end sub
その他の回答 (4)
- maverik1226
- ベストアンサー率75% (9/12)
こんにちは。別案でこんなのもあります。 前提として「Sheet1で1行目からデータが詰まっている」ことが条件となります。 1行目が空欄だったりすると、「+1」を「+2」とかに調整する必要があります。 ご参考になれば幸いです。 Sub Test() Dim r As Integer 'Sheet1で「使われている」セル範囲の行数を取得 r = Sheets("Sheet1").UsedRange.Rows.Count + 1 Sheets("Sheets1").Cells(r, 1).Select End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
文章の方言による説明を併用せよ。出ないと本件は意味がわからない。 (1)元データの最終行の次行は判るよね。 (2)フィルタ済みの状態で、可視セルの最下(大)行の次を求めたいのか 例データ A列 コード a a a s d a d f a a x x d ここで「a」などを選んで(フィルタし)、下記を実行してみてください。 Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d d = Range("A2").End(xlDown).Row MsgBox d k = 0 For i = 1 To 20 If Cells(i, "A") = "" Then MsgBox k Exit For Else k = k + 1 End If Next i End Sub 泥臭いやり方だが、1行の記述で済む様なコードはあるのかな。 ーー フィルタ結果表示状態を崩しても良いのなら、 Sub test02() ActiveSheet.ShowAllData d = Range("A65536").End(xlUp).Row MsgBox d End Sub だが、これではダメなのだろうね。 ShowAllDataは「すべて」状態だとエラーになるので注意。 ーー 本題は>1つ下のセルを選択するにはどうしたら・・なので Cells(d + 1, "A").Select は必要ですが。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
Range("A65536").Select Selection.End(xlUp).Select SendKeys "{down}" に変更してみては?
- qualheart
- ベストアンサー率41% (1451/3486)
オートフィルタで上記のようになると言うことは、A1~A19までは何かしら入力されていて、A20からは何も入力されていないと言うことですよね? だとすれば n = 1 Do Until Cells(n, 1) = "" n = n + 1 Loop Cells(n, 1).Select で良いのじゃないでしょうか? ようは、一行ずつ空白かどうかを見て、空白になったらループを止めてそのセルを選択する、という単純なマクロです。 ご参考まで。
お礼
できました!ありがとうございました~。