0

任意のシートで再利用してシートを閉じ、ユーザーを「ホーム」シートに戻すことができる単一のマクロをExcelで作成したいと思います。

こんなこと考えてたの?しかし、3 行目でエラーが発生します。

    Sub CloseCurrentTab()

    ' CloseCurrentTab Macro

    Dim strCurrentSheet As String
    strCurrentSheet = ActiveSheet.Name
    Sheets("strCurrentSheet").Visible = False
    Sheets("Home").Activate

    End Sub
4

2 に答える 2

2

あなたの質問から、アクティブなシート以外をすべて非表示にする一種のナビゲーションを作成したいと思います。

これが探しているものである場合は、次のコードのようなものが必要になります。

モジュール内:

Global Const cStrHomeSheet As String = "Home"

Public Sub subGotoSheet(strSheetName As String)
    エラー時 GoTo ErrorHandler
    Dim wsActive As ワークシート

    Application.ScreenUpdating = False

    wsActive = ActiveSheet を設定

    Sheets(strSheetName).Visible = xlSheetVisible
    Sheets(strSheetName).Activate

    wsActive.Visible = xlSheetVeryHidden

    Application.ScreenUpdating = True

    サブを終了

エラーハンドラ:
    MsgBox "ワークシートが見つかりません" & strSheetName
サブ終了

Public Sub subGotoHomeSheet()
    subGotoSheet cStrHomeSheet
サブ終了

Public Sub subGotoSheetFromCaller()
    subGotoSheet Application.Caller
サブ終了

Public Sub subHideAll()
    Dim ws As ワークシート

    Application.ScreenUpdating = False
    ActiveWindow.DisplayWorkbookTabs = False

    Sheets(cStrHomeSheet).Visible = xlSheetVisible
    Sheets(cStrHomeSheet).Activate
    シート内の各 ws
        If ws.Name cStrHomeSheet Then _
            ws.Visible = xlSheetVeryHidden
    次

    Application.ScreenUpdating = True
サブ終了


Public Sub subShowAll()
    Dim ws As ワークシート

    Application.ScreenUpdating = False
    ActiveWindow.DisplayWorkbookTabs = True

    シート内の各 ws
        ws.Visible = xlSheetVisible
    次

    Application.ScreenUpdating = True
サブ終了    

さらに、次のコードをThisModuleモジュールに配置します。

プライベート サブ Workbook_Open()
    subHideAll
サブ終了

説明 & 使用法:

モジュール内のコードはThisWorkbook、ワークブックをロードするホーム ワークシート以外のすべてを非表示にします。(ワークシートを切り替えているという事実を隠すために、ウィンドウの左下にあるワークシート タブ バーも非表示にします)。

を呼び出すことで、subGotoSheet "DestinationSheet"「アクティブ化」、つまりターゲット シートを再表示できます。古いシートは非表示になります。生活を少し楽にするために、呼び出すこともできます。subGotoHomeSheetさらに重要なのは、を使用することsubGotoSheetFromCallerです。これをボタン (またはその他の形状) と組み合わせると非常に便利です。ボタンまたは形状をワークシートに挿入する場合は、このマクロをそれに割り当てます。対象のシートに応じて項目に名前を付けるだけです (数式フィールドの左にある名前ボックスを使用)。ボタンをクリックすると、目的のシートが自動的に表示されます。

最後になりましたが、すべてのシートを表示および編集する「開発者モード」も必要になると思います。これを行うには を実行しsubShowAll、戻るには を実行しますsubHideAll。開発者モードとユーザー モードをすばやく切り替えることができるように、両方のマクロにショートカット キーを割り当てることをお勧めします。

于 2013-01-14T21:34:09.753 に答える
0

コンパイルするには、3 行目を次のように変更します。

Sheets(strCurrentSheet).Visible = False

ただし、これはシートを非表示にするだけです。それは削除しません。それを(永久に)削除するには、次を使用します。

Sheets(strCurrentSheet).Delete
于 2013-01-14T19:21:51.530 に答える