Note: The other languages of the website are Google-translated. Back to English

別のシートのセル値に基づいて特定のワークシートを非表示または再表示するにはどうすればよいですか?

別のシートのセルの内容に基づいて特定のワークシートタブを非表示または再表示する方法はありますか? たとえば、Sheet1のセルG2に「はい」というテキストを入力すると、Sheet1を非表示にし、「いいえ」と入力すると、Sheet1が一度に表示されます。 Excelでこの問題を解決するにはどうすればよいですか?

VBAコードを使用してセル値に基づいて特定のワークシートタブを非表示または再表示します


矢印青い右バブル VBAコードを使用してセル値に基づいて特定のワークシートタブを非表示または再表示します

別のワークシートのセル値に基づいて特定のワークシートタブを非表示または再表示するには、次のVBAコードを使用するとよい場合があります。次のようにしてください。

1。 別のシートを非表示にするセル値を含むワークシートに移動します。

2。 シートタブを右クリックして、 コードを表示、飛び出した アプリケーション向け Microsoft Visual Basic ウィンドウの場合は、次のコードをコピーして空白のモジュールウィンドウに貼り付けてください。スクリーンショットを参照してください。

VBAコード:セル値に基づいてワークシートタブを非表示または非表示にします。

Private Sub Worksheet_Change(ByVal Target As Range)
If [G1] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If
End Sub

セル値1に基づくドキュメント非表示タブ

注意: 上記のコードでは、 G1 はいは、ベースにしたいセルとセルのコンテンツです。 Sheet1 非表示または再表示する特定のシートです。 必要に応じて変更できます。

3。 次に、このコードを保存して閉じます。セルG1に「いいえ」またはその他のテキストを入力すると、Sheet1は非表示になりますが、セルに「はい」と入力すると、Sheet1がすぐに表示されます。スクリーンショットを参照してください。

セル値2に基づくドキュメント非表示タブ
1
セル値3に基づくドキュメント非表示タブ

 


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部

 

コメントを並べ替える
コメント (23)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは
ヒントありがとうございます。 同じシナリオを実行する必要がありますが、1つのセル(この場合はGXNUMX)だけでなく、列Gのすべてのセルで実行します。「範囲」で試しましたが、機能しませんでした。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Range( "X2:X100")=""の場合
Sheets( "EU TASK BASED MEASUREMENTS")。Visible = False

Sheets( "EU TASK BASED MEASUREMENTS")。Visible = True
終了する場合
End Subの


よろしくお願いします
このコメントは、サイトのモデレーターによって最小化されました
これが答えられた可能性はありますか? また、XNUMXつのセルだけでなく、範囲全体が機能するこのシナリオに遭遇しています...同じコーディングを使用して同じ結果が得られました。
このコメントは、サイトのモデレーターによって最小化されました
次のように2つのワークシートを作成しました。
プライベートサブワークシート_Change(ByValターゲットを範囲として)
[C20]="はい"の場合
Sheets( "sheet1")。Visible = True

Sheets( "sheet1")。Visible = False
終了する場合
[C22]="はい"の場合
Sheets( "sheet2")。Visible = True

Sheets( "sheet2")。Visible = False
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
非常に役立ちます!
このコメントは、サイトのモデレーターによって最小化されました
あなたが私の問題を手伝ってくれるかどうか見たいです。 私が使用するシートには基本的にこの正確なコードがありますが、or関数を使用しているため、答えは「はい」または「真」になります。 ただし、非表示/非表示になっているシートは、不明な理由で再非表示になることがあります。 yesと入力すると再表示されますが、後で使用する場合は、セルの値がyesのままであっても、再び非表示になります。 なぜこれが起こっているのか、および/またはそれを修正する方法はありますか?
参照用のコード:
Private Sub Worksheet_Change(ByVal Target As Range)'キャリブレーションページを非表示/再表示します
[B18]="はい"またはTarget.Value="True"の場合
Sheets( "XXX検証").Visible = True

Sheets( "XXX検証").Visible = False
終了する場合

このコメントは、サイトのモデレーターによって最小化されました
HiIには、前面のインデックスシートにリンクされた複数の名前付きタブがあるワークブックがあります。 ユーザーは、シート名の横にあるチェックボックス(空白、N / A、またははい(ドロップダウンリスト))をオンにすることで、使用するシートを選択できます。 チェックボックスが空白または「はい」が含まれている場合はシートが表示され、チェックボックスが「N / A」が含まれている場合は表示されないように、このコードを調整する方法はありますか。
私は試しましたが、VBAを機能させるのに十分な知識がありません。 ありがとう
このコメントは、サイトのモデレーターによって最小化されました
セルの値(はい/いいえ)に基づいてシートを非表示または再表示したいと考えています。 値はテーブル(tblFileContents)と列D4:D25にあり、シート名はシートのA4:A25にあります。 アイテムの順序は変更できます。 私がこれを行うことを可能にする例への参照がありますか?
このコメントは、サイトのモデレーターによって最小化されました
私は同じ問題を抱えており、他の誰かが解決策を提供しました。
2列のテーブル(テーブルとしてフォーマット)を作成し、左側の列に表示/非表示にするシートに名前を付けます。右側の列はあなた次第です。すべてのシート名を左側の列に入力します。
次に、このタブの[コードの表示]を選択し、「Dim Changed As Range」、「c As Range」、「rMTSAsRange」と入力します。
ディム・アイ・アス・ロング
Dim bShowAll をブール値として

rMTS = Range( "TblShowHide [Mark to Show]")を設定します
Set Changed = Intersect(Target、rMTS)
変更されていない場合は何もありません
bShowAll = Len(rMTS.Cells(1).Value)> 0
エラーで次の再開
i=2の場合rMTS.Rows.Countへ
Sheets(Range( "TblShowHide [Show / Hide Sheets]")。Cells(i).Value).Visible = IIf(bShowAll、True、Len(rMTS.Cells(i).Value)> 0)
私は次の
エラー時GoTo0
終了する場合
End Subの


このコメントは、サイトのモデレーターによって最小化されました
これを試してみます。 どうもありがとうございます!
このコメントは、サイトのモデレーターによって最小化されました
何を変更する必要があるのか​​わかりませんが、うまくいきませんでした。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジャン、
はい、ここに添付した例があります。 ファイルの名前をexample.xlsmに変更します(圧縮されていませんが、アップロードするには名前を変更する必要があります)
メニュータブには、さまざまなタブ名のテーブルがあり、xまたはその他の文字を作成してタブを表示します。文字を削除すると、タブが非表示になります。
希望が役立つ
このコメントは、サイトのモデレーターによって最小化されました
これにはいくつかのアイテムが含まれていますが、Excelファイルは含まれていません。
このコメントは、サイトのモデレーターによって最小化されました
メニュー/目次を最初のワークシートとして、はい/いいえの回答に基づいて作成したいのですが、特定のワークシートが表示されます。つまり、複数のワークシートが表示されます。
上記のコードに基づいていくつかのワークシートを表示するのに苦労しています。
AND関数を使用できますか?たとえば、Xセル= "Yes"の場合、Yシートを表示し、ZシートとKシートを表示しますか?
どんなアドバイスも大歓迎です。
よろしく
ヘレン
このコメントは、サイトのモデレーターによって最小化されました
Аявотнемогупонять、кактакоесделатьвгуглтаблицахименно?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは友人、

新しいGoogleシートを開き、「Sheet1」と「Sheet2」が表示されるように新しいシートを追加してから、[ツール]>[スクリプトエディタ]に移動します。 エディターで、以下を貼り付けます。

関数myFunction(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName( "Sheet1");
var sheet2 = ss.getSheetByName( "Sheet2");

var cell1 = sheet1.getRange('B2');

if(cell1.getValue()== 2){
sheet2.hideSheet();
}

if(cell1.getValue()== 3){
sheet2.showSheet();
}
}

ぜひお試しください。

敬具
マンディ
このコメントは、サイトのモデレーターによって最小化されました
このコードはうまく機能しますが、42シートに対して70の変数があるため、このコードは非常に長くなり、機能しなくなります。 VBAが処理できるコードサイズを超えないように、このコードをセクションで作成する方法はありますか? または、これらをXNUMXつの別々の優れたものに分割する必要がありますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、リズ
申し訳ありませんが、現在、問題を解決するための良い方法はありません。
このコメントは、サイトのモデレーターによって最小化されました
セル B1 に値があり、はいがシート 1 を非表示にしますが、B2 にも値があり、シート 2 などを非表示にします。最後のシートを非表示/非表示にしますが、残りのシートは表示しません。 10種類のシート? ありがとう
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、アンディ。
問題を解決するには、以下のコードを適用してください。
Private Sub Worksheet_Change(ByVal Target As Range)
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If
If [B3] = "Yes" Then
Sheets("Sheet2").Visible = True
Else
Sheets("Sheet2").Visible = False
End If
If [B4] = "Yes" Then
Sheets("Sheet3").Visible = True
Else
Sheets("Sheet3").Visible = False
End If
If [B5] = "Yes" Then
Sheets("Sheet4").Visible = True
Else
Sheets("Sheet4").Visible = False
End If
If [B6] = "Yes" Then
Sheets("Sheet5").Visible = True
Else
Sheets("Sheet5").Visible = False
End If
End Sub

注意: 上記のコードでは、以下のスクリプトを数回コピーして、セル参照とシート名を独自のものに変更するだけです。
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If


試してみてください。お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
「はい」または「いいえ」だけでなく、値の範囲に対してタブを表示したいという問題があります。 サブルーチンで IF ステートメントを繰り返そうとするとエラーが発生し、if ステートメントで複数の値をリストしようとするとエラーが発生します。 何か案は?

IF/OR ステートメントを使用する必要があるように思えますが、それがどのように機能するかはわかりません。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
[K6] = 「VS 1」、「VS 2」、「VS 3」、「VS 4」の場合
Sheets("Page6").Visible = True

Sheets("Page6").Visible = False
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、マーガレット。
問題を解決するには、以下のコードを適用してください。Or を使用して条件に参加する必要があります。
Private Sub Worksheet_Change(ByVal Target As Range)
If [K6] = "VS 1" Or [K6] = "VS 2" Or [K6] = "VS 3" Or [K6] = "VS 4" Then
Sheets("Page6").Visible = True
Else
Sheets("Page6").Visible = False
End If
End Sub

試してみてください。お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
Skyyang - これは完璧に機能しました。 あなたの迅速な対応をありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
これを使用しようとしていますが、「コンパイル エラー - プロジェクトまたはライブラリが見つかりません」というメッセージが表示され、はい/いいえドロップダウンがあるセルが強調表示されます。 これは結合されたセルである可能性があると思いますが、これを回避する方法はありますか?
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護