|
Private Sub Workbook_Open()
Dim code As String
Dim MyS As Worksheet
Dim Flg As Boolean
Sheets("メインページ").Select
Do
code = InputBox("コードを入力してください", "自分のシートを開く")
If code = "" Then Exit Sub: Flg = False
On Error Resume Next
Set NyS = Worksheets(code)
If Err.Number <> 0 Then
MsgBox "その名前のシートはありません", 48
Err.Clear: Flg = True
End If
On Error GoTo 0
Loop While Flg = True
MyS.Activate: Set MyS = Nothing
End Sub
やるとすればこんなコードになりますが、シート名のように変更する頻度が少ない
ものを、いちいちキーをタイプして指定するのはあまり賢いやり方ではありません。
一字打ち間違えても"シートがない"という判定をされてしまうからです。
ま、シート数が多くてタブをスクロールするのがたいへんなら、既存のツールバーに
コンボボックスを配置して、全シートをループしてシート名をリストアップするとか
メインページのIV列あたりに全シート名を入力、ダブルクリックイベントで目的の
シートを開くなどの工夫をするのがベターでしょう。
仮に後者の仕組みを作るとするなら・・
ThisWorkbookモジュール
Private Sub Workbook_Open()
Dim i As Long
Sheets("メインページ").Select
If IsEmpty(Range("IO1").Value) Then
For i = 1 To Worksheets.Count
Range("IO:IV").Cells(i).Value = Worksheets(i).Name
Next i
Range("IO1:IV1").EntireColumn.AutoFit
End If
Application.GoTo Range("IO1"), True
End Sub
Sheets("メインページ")のシートモジュール
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim Snm As String
If Intersect(Target, Range("IO:IV")) Is Nothing Then Exit Sub
With Target
If IsEmpty(.Value) Then Exit Sub
Snm = CStr(.Value)
End With
Cancel = True
Worksheets(Snm).Activate
End Sub
|
|