• 締切済み

エクセル ワークシート操作

エクセル VBAにてブックを閉じるときに作業をして追加した ワークシートを昇順、もしくは降順(名前、日付など)に 並び替えてから閉じるように する方法がわからないのですが? どのようにやるのでしょうか?

みんなの回答

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

こんにちは。 「作業をして追加した」シートがActiveSheetとして 1行は見出し、A列は氏名、B列は日付、入力データはE列までとして 以下のマクロで、お試し下さい。 Private Sub Workbook_BeforeClose(Cancel As Boolean)   Dim wR   As Long   '   '日付順(昇順)ソート '  With ActiveSheet '    wR = .Range("A" & Rows.Count).End(xlUp).Row '    .Range("A1:E" & wR).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess '  End With '  ActiveWorkbook.Save   '-----------------------------------------------------------   '日付順(降順)ソート '  With ActiveSheet '    wR = .Range("A" & Rows.Count).End(xlUp).Row '    .Range("A1:E" & wR).Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess '  End With '  ActiveWorkbook.Save      '-----------------------------------------------------------   '氏名(昇順)+日付順(昇順)ソート   With ActiveSheet     wR = .Range("A" & Rows.Count).End(xlUp).Row     .Range("A1:E" & wR).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _     , Order2:=xlAscending, Header:=xlGuess   End With   ActiveWorkbook.Save   '   Application.Quit End Sub <マクロ貼付方法> (1) Alt+F11 (ツール → マクロ → Visual Basic Editor) (2) 「Microsoft Excel Objects」下の「ThisWorkbook」を選択 → マウス右Click →「コードの表示」を選択で表示される画面に貼り付け ※ (1) 日付順(昇順)ソート、(2)日付順(降順)ソート、氏名(昇順)+日付順(昇順)ソートの3種類を用意しましたので   必要なマクロを変更して、試してみてください。

77TAKETAKA
質問者

お礼

遅くなりましてすみません。 動きましたため、あと少々継ぎ足して使用させていただきます。

関連するQ&A

  • エクセルシートの並べ替えについて

    ひとつのエクセルブックに複数のワークシートがあって、それぞれのシートの見出し(デフォルトでsheet1とか2とか入っているところです)に名前をつけています。(例)東京支店、名古屋支店、大阪支店...等 今、シートの順番が作成順なのですが、これをシートの見出しの文字から、一発で昇順や降順に並べ替える方法はありますか? 参考書によると手作業では1枚ずつシートの順番の並べ替えができるようですが、シート枚数が多いためお尋ねしています。 よろしくお願いしします。

  • エクセルのワークシート

    エクセルのワークシート エクセルのブックを開いたときに、シートが3枚あったら そのまま開いて、 3枚なかったら1枚追加する、ということをしたいのですが どのようにすればよいか、教えていただけないでしょうか。

  • エクセルVBA ワークシート操作について

    エクセル2000 VBAで ワークシートが左から順番に 入力フォーム⇒加工費単価マスタ⇒出荷日報(原紙)と 3個あり4個目に出荷日報(原紙)をコピーしたワークシートを 入力して⇒テキストボックス1 (日付入力します出来れば、日付入力の指定方法⇒テキストボックスの入力制限方法も教えていただきたいです)に入力した名前を ワークシートに付けて保存したいのですが? 翌日は また左から4番目の位置にコピーされ 右に行くほど古い日付の順番にしたいです。 説明が不足していましたら連絡お願いします。

  • VBAでブック内のワークシートを名前をつけて保存

    エクセルVBAで作業中のブックの一部のワークシート(2枚)を名前をつけて保存する方法を教えてください。 (例)  《ブックA》  sheet1 sheet2     sheet3 10/5     10個 10,000円    4個 25,000円 東京     25個 18,500円    6個 42,000円 というブックから『10/5 東京』というブックでsheet2,sheet3の内容を 保存したいのですが・・・ VBAは勉強し始めでほとんどわからないので教えてください。

  • エクセル 一つのワークシートだけプログラムを無効にしたい

    こんにちは。 エクセルVBA初心者です。 ブックの複数のワークシートにVBAでプログラムを書いています。 Sheet1のモジュールにマクロ1~4 sheet2のモジュールにマクロ5~7 と言った具合です。 Sheet2で作業するのにプログラムが動作すると邪魔なので、Sheet2のプログラムだけを一時的に無効にしておきたいと思ってます。 このときの条件(というか希望)として、 ・マクロはまた使うので消さない ・Sheet1のマクロはSheet2の確認作業で使うのでそのまま使えるようにしておきたい ・有効/無効を簡単に切り替えたい があるのですが、このような要望をかなえる方法を教えて下さい。 尚、OSはWin2000、エクセルは97です。 よろしくお願いします。

  • エクセルのワークシート

    エクセルのブックをワークシート一枚ずつ別々に保存する方法はありますか?教えてください!

  • Excelで指定したワークシートを開かせたい

    Excelで指定したワークシートを開かせたいのですが、方法がわかりません。お知恵をお貸しください。 Excelを開いたときにメッセージボックスで開きたい日付のワークシートを指定して開かせるようにしたのですが方法がわかりません。 Excelのファイルは次のようになっています。 ワークシートは、1~31まで31のシートがあります。 Excelファイルを開いたときにどのファイルを開くか訪ね、該当するシートを開きたい。 日付入力が、「07月02日」ならワークシート名の2を、「07月05日」ならワークシート名の5を開かせたいのですが、方法がわかりません。 申し訳ありませんが、お力をお貸しください。

  • Excelの並べ替えがうまくいかない

    Excelで他のブックから表のデータをコピーして貼り付けしました。そして、並び替えで優先されるキー、一番目が名前の昇順、二番目が日付の昇順にしました。一番目の名前の昇順はうまくいくのですが、二番目に優先の日付の昇順がうまくいきません。まったく日付の昇順も降順もできないくて、反応がないんです。どうしたら二番目に優先される日付をうまく昇順でならびかえられるでしょうか。 宜しく御願い申し上げます。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3コピー元ワークシート3 という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3ワークシート という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

専門家に質問してみよう