どうでもいい話
最近ドキュメント作成をすることが増えたので、日中はExcelを使います。
少しでも面倒な作業を減らしたいのでマクロ作成するようになってきたので
使ったものは残しておこうと思います。
作ったもの(※ 随時更新)
▼ 直前に居たページに戻る機能を作る
※ ひとつ前にしか戻れないです。
下記から拝借 + ボタンクリックで移動としたかったのでカスタムしました。
Excelで直前に参照していたシートに戻る(シートの参照履歴を保持する)
ThisWorkbook
'PERSONAL.XLSB ThisWorkBook
'WithEventsにてApplicationオブジェクト(Excel全体を示すオブジェクト)に発生するイベントを拾える様にする
'PERSONAL.XLSBに記述することで、全てのExcelファイルに適用される。
Public WithEvents xlAPP As Application
'Excelブックが開いた時に自動実行する。
Private Sub Workbook_Open()
'アプリケーションオブジェクトを取得
Set xlAPP = Application
'標準モジュールの初回呼出し
'直接呼び出すとエラーになるため、実行時間をずらして呼び出す。
Application.OnTime Now + TimeSerial(0, 0, 1), "appFirst"
End Sub
'シートがアクティブになった時に自動実行する。
'(ブック内)シート間での参照履歴を保持する。
Private Sub xlAPP_SheetActivate(ByVal Sh As Object)
oldBook = nowBook
oldSheet = nowSheet
nowBook = ActiveWorkbook.Name
nowSheet = Sh.Name
End Sub
'Excelウインドウがアクティブになった時に自動実行する。
'以下によりExcelファイルを跨いでも、参照履歴が保持される。
Private Sub xlAPP_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
oldBook = nowBook
oldSheet = nowSheet
nowBook = Wb.Name
nowSheet = Wb.ActiveSheet.Name
End Sub
モジュール
'PERSONAL.XLSB 標準モジュール goBackSheet
'前に参照していたファイル.シートへ戻る(アクティブにする)
'マクロの実行メニューにPublicプロシージャが表示されないようにする。
Option Private Module
'参照履歴
Public oldBook As String '前に参照していたブック
Public oldSheet As String '前に参照していたブック
Public nowBook As String '現在参照しているブック
Public nowSheet As String '現在参照しているブック
'前に参照していたシートに戻る(Activeにする)マクロ
' ここはボタンを作ったときに生成されたファンクションです
Sub 戻る()
'エラー発生した場合は無視する
On Error Resume Next
Workbooks(oldBook).Worksheets(oldSheet).Activate
End Sub
'Excel起動時に自動呼出しされるモジュール
Public Sub appFirst()
'ファイル読込みに時間がかかるとエラーになるためスキップする
On Error GoTo nextProc
'ブック名・シート名を取得
nowBook = ActiveWorkbook.Name
nowSheet = ActiveSheet.Name
nextProc:
End Sub
▼ 選択されたセルの値を名前としたシートを作成する(範囲指定も対応)
Sub セルからタブ生成()
'
' セルからタブ生成 Macro
'
' Keyboard Shortcut: Ctrl+t
'
Dim 項目 As Range
For Each 項目 In Selection
' 「tmp」という名前のシートを複製する
Worksheets("tmp").Copy Before:=Worksheets("tmp")
' 「項目」の値をシートのD8に書き込む
Range("D8").Value = 項目.Value
' 「項目」の値をシートの名前にする
ActiveSheet.Name = 項目.Value
Next 項目
End Sub