誕生日にもらった意外なもの

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

1.開くたびに必ず目次のシートが表示されるようにする。または、閉じるときに、先頭のシートにジャンプして閉じるようにする。

2.目次のシートのシートリストをクリックして、当該シートを表示させる。

以上2点です。その他アドバイスがありましたらお願いします。

A 回答 (5件)

> すでに中に設定されているようです。


ワークブックを開いた際にマクロを有効にするか無効にするかのダイアログは表示されますか?
表示されるならマクロを有効にして下さい。
それでも動作しない場合、マクロを記述しているモジュールを誤っている可能性があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/23 14:43

モデルサンプルを上げてみます。

たぶん下記のことがしたいのでしょう。
シートを1つ追加(3->4枚にする。例を増やしただけで特別な意味なし)
Sheet2をSheet2のまま
Sheet3をaaa
Sheet4をXXXX
とシート名を変更
ーーー
Sheet1のA列にA2:B4
xxxxA2
Sheet2b3
aaac4
と入れる
ーー
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で照会のこと。
    • good
    • 0

> 再びエクセルを開くと、マクロが自動的に働かず



ツール→マクロ→セキュリティ から、「中」に設定して下さい。

あ、あと書き忘れましたが、#2のやつは、開く度に目次を作り直します。
ワークシート数がやたら多くて時間がかかりすぎる場合は宜しくないかもしれませんね。

この回答への補足

再度、すみません。すでに中に設定されているようです。

オープンパスワードを設定しています。

その関係でしょうか。起動しないようです。

よろしくお願いします。

補足日時:2007/01/23 14:12
    • good
    • 0

何も考えずテキトーに作ってみました。



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

この回答への補足

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

アドバイスをお願いします。

補足日時:2007/01/23 13:54
    • good
    • 0

1.マクロで


Altキー+F11キーでThisWorkBookモジュールに

Private Sub Workbook_Open()
Sheets("目次").Activate
End Sub
ただし、シート名を「目次」にしておいてください。

2.ハイパーリンクで
目次シートに、メニューの「挿入」、「ハイパーリンク」で「このドキュメント内」をクリックし、シートを選択します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報