• ベストアンサー

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

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

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

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

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

xa_tubame
質問者

お礼

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

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答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