• ベストアンサー

マクロにて最終入力セルを選択し、それ以降の行を閉じる

よろしくお願いします。 例えば、 A列に文字を入力しています(入力範囲はA1:A300) A15が最後の入力となりました。 A16以降の行をA300まで閉じる。 このマクロを、他のシートからマクロにて選択したときに処理をしたいのですが。 環境は、XP・2003です。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です >下記の!A65536"は、どのような意味があるのでしょうか? シートの最下行から上方向に検索して最後の行を見つけるということです(Office2003までは最下行が65536行になる) 301行よりも下にデータがあるなら LastR = Worksheets(ws).Range("A300").End(xlUp).Row に変更してください

tomtom0628
質問者

お礼

再度に渡り返答をありがとうございました! 早速応用させていただきます。 これからもよろしくお願いします。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>下記の!A65536"は、どのような意味があるのでしょうか エクセル2007出現までは、最大行数は65536行でした。 ですからA列最下行は、A65536セルでそこをポイントして ENDキーー>↑きーで最終データ行に行き着くのですがその操作をコード化したものです。 毎日のように、このOKWAVEのVBAの回答に出てきます。 ーー 下記のようなのも可能です。 Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d d = Range("B1").SpecialCells(xlLastCell).Row MsgBox d Range("A2:B" & d).Select End Sub ーー d = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row MsgBox d なども可能です。 入力などで、途中行以下は、絶対データを入れないなら d = Range("A300").End(xlUp).Row などとします。 ーー >A16以降の行をA300まで閉じる。 閉じるとは言いません。 非表示にするということかな。 (例)Rows("2:3").EntireRow.Hidden = True 第2第3行を非表示にする。 ブックを閉じる、ウィンドウ画面を閉じるとか使いますが、セル範囲やシートには、閉じるは、使いません。 ーー 非表示にする必要は無いのでは。通常それ以下に入力が無いからといって、非表示にしないのでは。 ーー >このマクロを、他のシートからマクロにて選択したときに処理をしたいのですが。 意味がわからない。 >マクロにて選択したときにーー>マクロのことを実行したときに シートの選択を変えたとき、の意味か。 あるシートを入力していて、>他のシートから・・ というのはどういう場面ですか。 エクセルの用語の勉強や、独りよがりの表現にならぬよう良く考えてください。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

>A16以降の行をA300まで閉じる とは行を「表示しない」にするということでよいですか? 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。どのシートを開いた状態で実行しても動作すると思います。 なお2行目のシート名は実際の名前に変更して下さい Sub Macro1() Const ws As String = "Sheet1" 'シート名を修正する Dim LastR As Long  LastR = Worksheets(ws).Range("A65536").End(xlUp).Row  If LastR < 300 Then   Worksheets(ws).Rows(LastR + 1 & ":300").Hidden = True  End If End Sub

tomtom0628
質問者

補足

さっそくの回答、ありがとうございます! 質問ですが、下記の!A65536"は、どのような意味があるのでしょうか? 入力範囲がA1:A300と限定されている場合も、関係が有るのでしょうか? LastR = Worksheets(ws).Range("A65536").End(xlUp).Row