- ベストアンサー
Excel2003 VBA6.0です シートの整理をしたい
エクセルのファイルにシートの数が大量になってきました。 どうしても同じファイルにしておきたいのですが、開くたびに、シートを探す動作が発生して面倒です。 それで先頭のシートを目次にして、開くたびに必ず目次のシートが表示され、かつ目次のリストの一覧から当該セル(ボタン)をクリックすると、目的のシートにジャンプするようにセルを設定したいのですが、マクロまたは関数を使う方法などで教えてください。 1.開くたびに必ず目次のシートが表示されるようにする。または、閉じるときに、先頭のシートにジャンプして閉じるようにする。 2.目次のシートのシートリストをクリックして、当該シートを表示させる。 以上2点です。その他アドバイスがありましたらお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> すでに中に設定されているようです。 ワークブックを開いた際にマクロを有効にするか無効にするかのダイアログは表示されますか? 表示されるならマクロを有効にして下さい。 それでも動作しない場合、マクロを記述しているモジュールを誤っている可能性があります。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
モデルサンプルを上げてみます。たぶん下記のことがしたいのでしょう。 シートを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で照会のこと。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> 再びエクセルを開くと、マクロが自動的に働かず ツール→マクロ→セキュリティ から、「中」に設定して下さい。 あ、あと書き忘れましたが、#2のやつは、開く度に目次を作り直します。 ワークシート数がやたら多くて時間がかかりすぎる場合は宜しくないかもしれませんね。
補足
再度、すみません。すでに中に設定されているようです。 オープンパスワードを設定しています。 その関係でしょうか。起動しないようです。 よろしくお願いします。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
何も考えずテキトーに作ってみました。 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
補足
すみません。両方のマクロを試しましたが、いずれの場合も、目次でないシートを開いた状態でファイルを閉じて、再びエクセルを開くと、マクロが自動的に働かず、普通の場合と同様に、閉じたときのシートが出てきます。 アドバイスをお願いします。
- merlionXX
- ベストアンサー率48% (1930/4007)
1.マクロで Altキー+F11キーでThisWorkBookモジュールに Private Sub Workbook_Open() Sheets("目次").Activate End Sub ただし、シート名を「目次」にしておいてください。 2.ハイパーリンクで 目次シートに、メニューの「挿入」、「ハイパーリンク」で「このドキュメント内」をクリックし、シートを選択します。
お礼
モジュールの貼り付け場所を間違えていました。 出来ました。感謝。