• ベストアンサー

Excel2003 VBA6.0です シートの整理をしたい

エクセルのファイルにシートの数が大量になってきました。 どうしても同じファイルにしておきたいのですが、開くたびに、シートを探す動作が発生して面倒です。 それで先頭のシートを目次にして、開くたびに必ず目次のシートが表示され、かつ目次のリストの一覧から当該セル(ボタン)をクリックすると、目的のシートにジャンプするようにセルを設定したいのですが、マクロまたは関数を使う方法などで教えてください。 1.開くたびに必ず目次のシートが表示されるようにする。または、閉じるときに、先頭のシートにジャンプして閉じるようにする。 2.目次のシートのシートリストをクリックして、当該シートを表示させる。 以上2点です。その他アドバイスがありましたらお願いします。

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

  • ベストアンサー
回答No.4

> すでに中に設定されているようです。 ワークブックを開いた際にマクロを有効にするか無効にするかのダイアログは表示されますか? 表示されるならマクロを有効にして下さい。 それでも動作しない場合、マクロを記述しているモジュールを誤っている可能性があります。

xa_tubame
質問者

お礼

モジュールの貼り付け場所を間違えていました。 出来ました。感謝。

その他の回答 (4)

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

モデルサンプルを上げてみます。たぶん下記のことがしたいのでしょう。 シートを1つ追加(3->4枚にする。例を増やしただけで特別な意味なし) Sheet2をSheet2のまま Sheet3をaaa Sheet4をXXXX とシート名を変更 ーーー Sheet1のA列にA2:B4 xxxx A2 Sheet2 b3 aaa c4 と入れる ーー Sheet1のシートモジュールに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then Dim sn As String sn = Target.Value cl = Target.Offset(0, 1).Value MsgBox sn Worksheets(sn).Activate ActiveSheet.Range(cl).Select End If End Sub ーーーー Sheet1のA2:A4のどれかを選択すると ソノシートが開き、対応行B列のセルがアクチブになります。 ーーー 上記のエッセンスを採り、A列範囲チェックやその他工夫してみてください。 ーーー >関数を使う方法などで 関数はセルの値しか左右できません。こういう発言が出るのは関数の本質を理解してないからです。 ーーーーー 開いたときSheetを開くのは、よくある質問例で ThisWorkbookのWorkbook_Openイベントに入れればよいので略。 WEBで照会のこと。

回答No.3

> 再びエクセルを開くと、マクロが自動的に働かず ツール→マクロ→セキュリティ から、「中」に設定して下さい。 あ、あと書き忘れましたが、#2のやつは、開く度に目次を作り直します。 ワークシート数がやたら多くて時間がかかりすぎる場合は宜しくないかもしれませんね。

xa_tubame
質問者

補足

再度、すみません。すでに中に設定されているようです。 オープンパスワードを設定しています。 その関係でしょうか。起動しないようです。 よろしくお願いします。

回答No.2

何も考えずテキトーに作ってみました。 Private Const IndexSheet As String = "目次" Private Const IndexCol As String = "A" Private Const IndexRow As Long = 1 Private Sub Workbook_Open() On Error Resume Next Dim i As Long Application.ScreenUpdating = False '目次シートなければ作成 ThisWorkbook.Sheets(IndexSheet).Select If Err.Number = 9 Then ThisWorkbook.Sheets.Add(Before:=Sheets(1)).Name = IndexSheet End If '目次作成 For i = 2 To ThisWorkbook.Sheets.Count With ThisWorkbook.Worksheets(IndexSheet) .Hyperlinks.Add Anchor:=.Range(IndexCol & i - IndexRow), Address:="", SubAddress:= _ ThisWorkbook.Worksheets(i).Name & "!A1", TextToDisplay:=ThisWorkbook.Worksheets(i).Name End With Next '目次シートを選択 ThisWorkbook.Worksheets(IndexSheet).Select Application.ScreenUpdating = True End Sub

xa_tubame
質問者

補足

すみません。両方のマクロを試しましたが、いずれの場合も、目次でないシートを開いた状態でファイルを閉じて、再びエクセルを開くと、マクロが自動的に働かず、普通の場合と同様に、閉じたときのシートが出てきます。 アドバイスをお願いします。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

1.マクロで Altキー+F11キーでThisWorkBookモジュールに Private Sub Workbook_Open() Sheets("目次").Activate End Sub ただし、シート名を「目次」にしておいてください。 2.ハイパーリンクで 目次シートに、メニューの「挿入」、「ハイパーリンク」で「このドキュメント内」をクリックし、シートを選択します。

関連するQ&A

  • エクセルシートのウィンドウ枠の固定について

    ■エクセルのファイルに次のマクロを設定し、ファイルを開くたびに「目次」のシートが表示されるようにします。 Private Sub Workbook_Open() Sheets("目次").Activate End Sub ■この目次のシートに目次を作成し、それぞれの目的のシートにハイパーリンクでジャンプするようにします。 「目次」のシートのそれぞれのセルに、目的のシートのセルA1をハイパーリンクする。 ■目的のシートでウィンドウ枠の固定を行う(6行目) --------------- このような設定下で、このファイルを新たに開くと、必ず「目次」のシートが表示され、目次の中から目的のシートを表示したセルのハイパーリンクをクリックすると、目的のシートにジャンプします。 ところが、ウィンドウ枠(6行目)が固定してあり、普通前回閉じた行から表示されるはずですが、 たとえば、 事例(A) 1 2 3 4 5 --- 100 101 102 ですが、実際に新たにファイルを開いて、目次からジャンプすると、 事例(B) 1 2 3 4 5 ---- 6 7 8 9 となって枠の設定のない状態と同じ状態で表示されます。 これを、前回閉じた事例(A)の状態で再表示されるようにしたいのですが、何が悪くて枠の固定が当初の状態に戻るのかわかりません。 何かの設定が不適切なのだと思います。 教えてください。

  • VBA セルのジャンプ

    教えて下さい。 Excelにて、シート1のA行のある番号セルをクリックすると、シート2の番号一覧の同じ番号のセルにジャンプするというマクロを組みたいのですが、どうすればいいでしょうか?

  • エクセルブックの全シートの印刷を1つのシートで管理

    エクセルで目次シートを作り、他の全シート名をリストアップし、その目次シート上で全シートの印刷管理ができるようなマクロを作りたいと考えています。 目次としてリストアップされたシート名の隣にチェックを入れるセルをつくり、そこにチェックが入っているシートだけをまとめて印刷できるようにしたいんです。 シートのリストはあらかじめ手入力しておくとして、後の印刷のところをどうやればいいのかわかりません。 どなたかわかる方教えてください。

  • エクセルで毎回1枚目のシートを開くようにしたい

    Excel2007を使っています。 Excelの場合、ファイルを開くと、前回終了したときのシート、セルがアクティブになっているのですが、 セルの位置はどこでもいいのですが、1枚目のシートを開くようにしたいのですが、できますか? 1枚目という指定ではなく、シート名「目次」(目次というシート名を付けています)でもいいです。 マクロになってもいいです。(簡単なレベルですが)よろしくお願いいたします。

  • Excel VBA シートへのリンク

    セルA1表示されている名前と同じシート名(別シート)へリンクするマクロを 作成したいです。 A1セルには関数が入力されていて 他のセルで条件を選択すると該当するシート名と同じ名前が表示されるようになっています。 よろしくお願いします。

  • エクセル・ハイパーリンクの質問

    よろしくお願いします。 仕様環境 WinXP/SP2 エクセル2002 エクセルを使ってマニュアルを作っているのですが、 目次シート(sheet)を作り、各項目にハイパーリンクを貼って 他のsheet(マニュアル)に飛ぶようにしています。 ここで2つ問題があります。 1つめは、ハイパーリンクでジャンプする時、「クリック」すると目的の sheet(マニュアル)のセルにジャンプします。 それを「クリック」ではなく「ダブルクリック」でジャンプするように したいのですがどうすればよいのでしょうか? 「クリック」だとちょっと触っただけでも飛んでしまうので、 一拍空けたいのです。 2つめはハイパーリンクでsheet(マニュアル)のセルにジャンプした時、 必ずその目的のセルを一番左上にもってくるようにしたいのですが、 できません。 マクロで記録したりもしたのですが、最初の1回目はできるのですが、 他の操作を行ったりして、改めて行うと必ずしも一番左上になりません。 具体的にいうと例えばセル番号A101を一番左上にしたいのですが、 左下に表示されてしまいます。 ハイパーリンクのジャンプはうまくいくもののとんだ先が、 左下に表示されてしまうのは見栄えもよくありません。 どうすれば、常に一番左上に表示されるようになるのでしょうか? ご指導宜しくお願いします。 PS 添付ファイルを貼り付けました、 私の説明がわかりづらい場合もありますので、ご参照頂ければと思います。

  • VBAで非表示のブックからシートの名前だけ抽出する方法

    WindowsとExcel2003を使用しています。 (1)まず、VBAでフォームを作成しその上にリストボックスを1つ作ります。 (2)そのリストボックス内に自フォルダにあるファイル名の一覧を表示します。 (3)その一覧から1つだけエクセルファイルを選択し、実行ボタンをクリックすると新しいフォームが開きます。 (4)そのフォームのリストボックス内に、選択したファイル内の全シートの名前を表示させようとしています。 (3)までは何とか作成することが出来て、動作しています。 (4)で、選択したエクセルファイルのシート名を取得するときに、当該bookを開くことなく、もしくは使用者には選択したbookが立ち上がったことを気づかせずにシート名だけを取得したいと考えていますが、この方法がわかりません。 さらには、取得したシート名から1つを選択し、それを変数に格納して使おうと思っています。 FileSystemObjectというのを使用するのでしょうか? ExcelVBAをはじめて触るため、手探り状態です。情報が不足している場合はすぐに補足します。 ご存知の方、ご教示よろしくお願いします。

  • 任意のセルを別シートに抽出する方法

    自分で選択したセルを他のシート(ファイルは同じ)上に、選択した順に上から並べたいと考えています。関数でやろうといろいろ考えましたが上手くいかず、結局マクロが必要か~と行き詰まり皆さんのお力を借りたく掲載させていただきました。 状況を説明させていただくと、住所一覧の抽出をしたいと考えています。 A1:名前 b1:住所といった順でデータが入っていますが任意で名前を選択し、マクロボタンを押すと隣のシートに行ごとコピーされるようにし、順次、選択+クリックを行えば新しいリストが出来るというイメージでやろうと思っています。 時間のあるときでかまいませんのでご協力よろしくお願いします。

  • Excel2008のVBAで

    初めまして。 Excel2008のVBAで以下のことが実現可能でしょうか? 要件:エクセルのシート上で画像を自由に配置させる。 用途:部屋のレイアウトを考えるときに椅子や机を予め画像に取っておき、それを自由に配置して大まかなレイアウトを考えるための物 現状:VBAにてコンボボックス(机や椅子の備品一覧)から備品を選択して該当する画像をシートに張り付ける所まではなんとかなりました。 問題点: シート上に配置した備品の画像をマウスでクリックしたときに備品の諸元をシート上あるエリアに表示する事可能でしょうか? 例えば椅子の画像をクリックしたときに椅子のメーカーやサイズをシート上(フォームでも可)に表示したいと言う事です。 配置した画像のプロパティを見てもイベント処理が無いみたいで、右ボタンのマクロを登録すると画像をクリックすると常にマクロが実行される ので画像のサイズや表示位置を変更することができなくなります。 また、仮にマクロを画像毎に登録するとなると配置する画像の数が不定なので予めマクロをコーディングしておくことが不可能? 等が考えられ、果たしてExcel2008VBAで実現出来るのかと思い、何かヒントでもいただければと思い投稿させて頂きます。

  • VBA ”あかさたなはまやらわ”で選択、リスト表示

    よろしくお願いします。 ユーザーフォームのコマンドボタン1をクリックしたときは、 Sheet1のA2~A行の最終セルの中から先頭文字が、 あいうえお(カタカナも含む)を選択してリストボックス1に リストとして表示する。 同じように ユーザーフォームのコマンドボタン2をクリックしたときは、 Sheet1のA2~A行の最終セルの中から先頭文字が、 かきくけこ(カタカナも含む)を選択してリストボックス1に リストとして表示する。 以後同じようにして”わ”まで繰り返す。 【A行の最終行は可変します】

専門家に質問してみよう