• ベストアンサー

EXCEL ファイルをあけた後いつも「TOP」シートを開く方法を教えてください。

のみこみが悪くてすみません。 マクロ自動記録でマクロをほんの少し進めている初心者です。 ファイルをあけたときに「TOP」シートを開きたいのですが 以前次のように教えていただいたのですが その後の操作についてさらに教えてください。 標準モジュール→ModueL 1 をダブルクリックをしました。 そして画面の右側に Sub Auto_Open() Worksheets("TOP").Activate End Sub と入れました。 この後どのようにしたら良いのか教えてください。 よろしくお願いします。 別件でModueL 1~ModueL 10ぐらいはありますが そもそもモジュールとは何ですか。 どのようなときに活用するのですか。 こんな基本的な質問ですみませんがよろしくお願いします。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

>ファイルをあけたときに「TOP」シートを開きたいのですが 保存するとき「TOP」シートを一番前にして保存すれば、 開いたときは必ず「TOP」が開いた状態で出てきますけど? AutoOpenマクロは、下手に使うと色々と問題が出てくるマクロですから 初心者の方は「最後に特定のシートが先頭に出てくるような処理をして 保存する」ような方針でプログラムを組んだほうがいいと思いますが?

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 まず、前回(#2569163)で、教えてもらったものの内の選択肢ですが、基本的には、 ThisWorkbookモジュールで、 で、 Private Sub Workbook_Open()  Worksheets("TOP").Select  'Worksheets("TOP").Activate 'どちらでもよい End Sub ということです。 Auto_Open() に書いてもよいのですが、その使いこなしを理解してからのほうがよいです。その違いについては、あまり書かれていませんし、知らない人も多いかと思います。 その理由は以下で書きます。 >この後どのようにしたら良いのか教えてください。 一旦、保存し、再び開けるだけで良いです。 これは、「イベント・ドリブン型マクロ」と呼んで、イベント(人が何かを行う時 -- 開ける・閉じる・選ぶ)などによって起動される種類の自動実行型のマクロです。 >別件でModueL 1~ModueL 10ぐらいはありますが >そもそもモジュールとは何ですか。 モジュールというのは、元の意味は、「規格化された構成単位」ということで、プロシージャをまとめて置いておく場所です。(何年後かにこの意味が、とても大事なことになります。ならなかったら、それはそれまでです。) そこには、三つのものが基本的には入ります。「宣言」「ステートメント」「プロシージャ」というものです。それぞれは、詳しく知らなくてもよいです。プロシージャの中で、単独で他から命令で動かせるものが、「マクロ」です。主に計算をし、自分では仕事をしないのが、「ユーザー定義関数」です。 モジュールには、また、三つあります。 ・クラスモジュール ・標準(ジェネラル)モジュール ・ローカルモジュール[例:ThisWorkbook, Sheet, UserForm]  (「ローカルモジュール」と言い方は一般的ではないようです。これは、スコープと言って、その守備範囲に対して、標準モジュールに対して、便宜的に呼んでいます。) それぞれには、それぞれの特徴がありますが、Excelでは、基本的には、標準モジュールに入れることになっています。しかし、他のアプリケーションでは、必ずしも、そうではありません。時々、シートモジュールやユーザーフォームモジュールに詰め込む方がいますが、それは、間違いです。 シートモジュールは、その親オブジェクト(シート)を働かせるために専用の働きをします。 >別件でModueL 1~ModueL 10ぐらいはありますが それは多すぎます。というよりは、必要な限り、まとめてください。 標準モジュールというのは、親オブジェクトが、Application になっていますので、扱いが楽なのです。親には、直接、抱えている他に違った子供(シート)がいないために、命令を素直に聞いてくれます。しかし、あまり子供が多いと、面倒をみるのが遅れてしまいます。また、子供が親に要求する内容(複数のプロシージャの内容)は、なるべく統一したほうがよいということです。例えば、文字処理班とか、レイアウト班とか、計算処理班とか、それぞれをモジュールの中で別けてあげます。 シートモジュールでは、自分の子供(シートなど)のいうことを優先します。例えば、「"A1"」というと、自分のシート(Sheet1)の、"A1" のことを考えるように作られています。だから、いや、「Sheet2 のA1」だというと、「知らない(エラー)」と言ってきます。 根本的な違いは、最初の区分けで書いたように「ローカル」と「標準」というように、標準モジュールは、その守備範囲は、何もステートメント(自分はここしか面倒みません、と書く = "Private")しない限りは、ブック全体に掛かってきますが、「ローカル」は、基本的には、そのシートなどの範囲のみです。 では、なぜ、ThisWorkbookモジュールを私は薦めたかというと、ThisWorkbook モジュールは、ブックの玄関なのです。ほとんどは、ThisWorkbookを通ってから、次に、命令を読むからです。 クラスモジュールというのは、家の中の家訓のようなものです。門限が何時とか、洗濯は夜中にしないとかいうように、それぞれのオブジェクトの子供たちにルール作りをさせます。しかし、それは、単に家訓書みたいにしていますから、開くときなどに、その家訓書を読み上げないと、みんなは実行しません。しかし、これは、ThisWorkbook モジュールでも同じようなことが出来ます。ただ、あまり、ここは玄関ですので、私は、あまり、ここにごちゃごちゃ置くのが好きではありません。かなり上級の人でも、ここに平気な人がいるようですが、あまり、片付け上手ではない人かも、と思ってしまいます クラスモジュールは、将来、重要になってきます。今VBAユーザーは、あまりクラスモジュールを目の当たりにすることが多くありません。先ほど述べたイベント(人が何かをする動作)の設計図になるのです。その時に、一つ一つの動作ではなく、汎用性のあるもの(オブジェクト)の設計にもなるのです。 なお、オブジェクトというのは、VBAでは、二つの意味を持っています。本来は同じものなのですが、一つは、シートやブック、または、ボタンやユーザーフォームなどのコントロールなど既に形になったものと、もう一つは、そうした概念(クラス定義)が実体化(インスタンス)したものと両方があります。 ところで、最初のご質問のレベルですが、入門編で行ってもよいのですが、本格的には、中級に入ってからです。「イベント」というのは、書いて貼り付けるなら誰でも出来ますが、それを本当に取り上げられるの、VBAの上級コースです。上級とはいっても、理屈だけだったら、3ヶ月ぐらいで卒業してしまいます。

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

前にも同じ質問があって、答えたような気がするが、 TOPシートって何? この用語エクセルで余り見ないが。 (!)TOPという名をつけたシート (2)アクチブシート (3)(現時点で)タブが一番左にあるシート のどれかでしょうが。区別できてますか。 (1)Worksheets("TOP").Activate (2)Activesheet.Select ((3)Worksheets(1).Activate 標準モジュールとは VBEでVBAのコードを書き込む場所です。シートモジュールに対し、どこからでも参照できる。 http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page03.htm http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_040.html クラスモジュール http://www.moug.net/skillup/opm/opm08-01.htm その他 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_130_04.html WEBで照会すれば沢山でてきます。 >どのようにしたら良いのか教えてください 何をしたいのかかいてないのでは。 閉じてエクセルブックを保存すればよい ということかな? その後、いつでも、そのブックを開くという人間(またはプログラム)の動作をキッカケとして実行されるのです。

関連するQ&A