• ベストアンサー

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

よろしくお願いします。 例えば、 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/17068)
回答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

関連するQ&A

  • vbaで最終行に張り付け

    Excelマクロについて教えてください。 sheet2にsheet1から選択した範囲を貼り付けております sheet2のC列が連続した値になっておりそれを軸に貼り付けをしたいのです。 sheet1のA1:g40の範囲をcutしたものを sheet2のC列の最終入力行の一段下の行に A列から貼り付けしたいのです。 よろしくお願いします

  • 特定の行を選択して別のシートにコピーするマクロ

    指定した行と、 特定の文字(複数)がある行を 全て選択し、別のシートにコピーする マクロをお教えいただけませんか?  選択したい行は(同じシートで)  必ず3行目と、  A列に『ABC』、『DEF』という文字がある全ての行です。 このようなマクロはどのように作ればいいでしょうか? マクロに詳しい方、お知恵をお貸し頂けませんでしょうか?

  • マクロを使って最終行を取得して、範囲内の空白セルに

    マクロを使って最終行を取得して、範囲内の空白セルに指定の文字列を表示させたいです。 お世話になります。 要件としてはタイトルの通りです。 Excel2013を利用しています。 A列を参照して最終行を取得し、 B列の1~最終行までの空白セルに対して「未入力」という文字列を入力したいです。 この場合、考え方はいろいろあるのでしょうが どのようにコードを組めば良いでしょうか? 自分では、まったく書けていないというのが正直なところです。 そこで御手数ですが、ご協力をお願いいたします。

  • エクセル マクロ 選択範囲を含む行の特定列を選択し、決まった値を入力させたいです。

    みなさんいつもありがとうございます。 ある範囲を選択しているときに、その選択範囲を含む行の、 特定の列全てに決まった文字列を入力させたいです。 【例】 (1)の範囲を選択している時に実行すると (2)のセル全てに『ABC』と入力  (下の場合は文字列を入力させたいのがC列)  (1)        (2) A2:A4  ⇒  C2:C4 A2:B4  ⇒  C2:C4 B5:E10  ⇒  C5:C10 よろしくお願いいたします。

  • 選択範囲のセルを1行ずつ結合するマクロ

    こんにちは、いつも参考にさせていただいております。 セルを範囲選択し、 1行ごとに結合させる方法はないでしょうか。 手作業ではなくマクロでの方法を探しています。 イメージとしては (1)範囲選択する (2)マクロ実行する  →列の範囲を1行ずつ、選択している範囲だけ各行を結合 図も添付いたしますので、どうかアドバイス・ヒント頂けないでしょうか。 よろしくお願いいたします。

  • 自動入力マクロ教えてください

    sheet1のB列に数値を入力していますデータは10行目以降に入力されています。 データが1,10.20ならsheet2のB列、2.15.35ならsheet2のC列5.40ならsheet2のD列それ以外はsheet2のE列に自動的に入力したいのですがそのマクロを教えていただけないでしょか。行はsheet1と同じ行に入力します

  • エクセルで結合セルがあるため最終行が解りません。

    エクセルで結合セルがあるため最終行が解りません。 A列2行目と3行目が結合セル(見出し)のためA列の最終行(罫線を除きデータが入ってる行)を求めれなくて困ってます。データは4行目以降から入力していく予定ですが Range("A" & Rows.Count).End(xlUp).Row は2となるため+1で入力行を求めてると3となってしまいます。A4からAの最後の行の範囲で罫線を除く最終行を出せればよいのですが  最初は4 以下順次5 6 7 ‥ どなたかご教示頂けないでしょうか?

  • マクロでの行選択

    Excelのマクロについて質問です。 例えば、A1~A5セルをセル結合したときに、3行目~5行目を行選択 しようとしたときに手動で行なうとうまく選択できるのですが、マクロ で実行するとなぜか結合されている1行目から5行目が選択されて しまいます。 具体的に以下のようなマクロを書きました。 Rows.("3:5").select 手動のみでマクロ化は無理なのでしょうか? 今のままですと、一回連結をといてセルを選択して処理を実行、その のちにセルを再び連結させるということをやらなければいけなくなって しまいます。

  • マクロ:フィルタの選択について

    例 A列に野菜の種別(大根やトマトなど)が入力されており B列に県名が入力されています。c列以降もあり。 フィルタでA列の野菜名を選択し、抽出された結果を別シートに 貼るという野菜別のシートを作る単純な作業の繰り返しを マクロで設定したいのですが マクロの記録で行うと、フィルタで野菜名を選択する時に Selection.AutoFilter Field:=4, Criteria1:="大根" というように、名前が入力されています。 フィルタの選択を上から下に4つ目、5つ目という感じで 下に選択していくマクロを教えて頂ければと思います。 また他に良い方法がありましたら、アドバイス宜しくお願い致します。

  • マクロ CSVファイル取込 最終行、最終列の取得

    マクロでCSVファイルを取込むプログラムを作成しております。 最終行を取得するソースまではできたのですが、最終列を取得する処理ができておりません。 教えて頂けないでしょうか。 処理概要 (1)ボタンを押したら、Sheet2にCSVファイルがインポートされる (2)Sheet2に出力されたA2行~A8行とA2行~A8行の最終列までをSheet1のD4行~D10行、D4行~D10行の列にコピー  (3)Sheet2に出力されたA9行目はコピーしない (4)Sheet2に出力されたA10行以降とA10行以降の最終列までをSheet1のA13行以降の最終列までにコピー 現在のソースは(2)、(4)の最終列を取得するソース以外はできています。 (2)、(4)の最終列を取得し、コピーする方法を教えて下さい。 現在のソースです。 Sub READ_TextFile() Dim LoadFileName As String Dim LR As Long '選んだcsvファイルをSheet1に読み込む LoadFileName = Application.GetOpenFilename("CSVファイル(*.csv),*.csv", 1, "読み込むcsvファイルを選んで下さい", False) If LoadFileName = "False" Then Exit Sub Workbooks.Open LoadFileName Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") ActiveWorkbook.Close False 'Sheet2のA2:A8をSheet1のD4を先頭セルとする範囲にCopy Worksheets("Sheet2").Range("A2:A8").Copy Worksheets("Sheet1").Range("D4") 'Sheet2のA列のデータのある最終行を取得しLRという変数に入れる LR = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 'Sheet2のA10からA列の最終行までをSheet1のA13を先頭セルとする範囲にCopy Worksheets("Sheet2").Range("A10:A" & LR).Copy Worksheets("Sheet1").Range("A13") End Sub

専門家に質問してみよう