|
>エクセルの標準機能としても使用
ということなら、アドインにする方法もありますが、配布を目的とせず
>ファイル毎に記述しなくても、エクセルを立ち上げると常に機能
ということをするだけなら、Personal.xls を使います。Personal.xls の作り方
などは↓の「マクロの使い方 5 」を参考にして下さい。
http://park11.wakwak.com/~miko/Excel_Note/14-01_macro.htm#14-01-01
で、Personal.xls が出来たら、その標準モジュールに以下のマクロを入れて下さい。
Sub Auto_Open()
Dim CB As CommandBar
Dim WS As Worksheet
On Error Resume Next
With Application.CommandBars
Set CB = .Item("SheetSelect")
If Err.Number <> 0 Then
Set CB = .Add("SheetSelect", msoBarFloating, False, True)
With CB.Controls.Add(Type:=msoControlComboBox, Temporary:=True)
.AddItem "[シート選択]"
For Each WS In Worksheets
.AddItem WS.Name
Next
.Tag = "GetS"
.Priority = 1
.OnAction = "Ac_Sheet"
.DropDownLines = 10
.ListIndex = 1
End With
Err.Clear
End If
On Error GoTo 0
With .Item("Standard")
CB.left = .Width + 1: CB.top = .top
End With
End With
CB.Visible = True: Set CB = Nothing
End Sub
Sub Auto_Close()
With CommandBars("SheetSelect")
If .Visible = True Then .Visible = False
End With
ThisWorkbook.Save
End Sub
Sub Ac_Sheet()
Dim Cmb As CommandBarControl
Dim MyS As String
Set Cmb = CommandBars("SheetSelect").Controls(1)
With Cmb
If .ListIndex < 2 Then GoTo ELine
MyS = .List(.ListIndex)
End With
With Worksheets(MyS)
If .Visible = False Then .Visible = True
.Activate
End With
Cmb.ListIndex = 1
ELine:
Set Cmb = Nothing
End Sub
|
|