
VBAコードでのシート自動表示について教えてください。
Excelファイルのシート7のシート名が建築物(表面)5.3があります。
下記の条件でのシート表示を自動で行いたいです。
条件-1
セルAG1には「=受付シート!F3」に値が表示されるように設定しております。
セルAG1に「札〇市」と表示された場合のみシート22のシート名が「自〇隊」を表示
条件-2
セルE11には「=受付シート!J67」に値が表示されるように設定しております。
セルE11に「■」と表示された場合のみシート15のシート名が「消〇用添付用紙」を表示
条件-
セルQ50には「=受付シート!F196」に値が表示されるように設定しております。
セルQ50に「■」と表示された場合のみシート14のシート名が「消〇(事務用)」を表示
以上です。
以上の条件以外では「自〇隊」「消〇用添付用紙」「消〇(事務用)」のシート全て非表示にしたいです。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
>シートの表示・非表示について
'非表示
SheetObject.Visible = False
'非表示(シートタグ右クリックにも非表示)
SheetObject.Visible = xlVeryHidden
'表示
SheetObject.Visible = True
>シート表示を自動で行いたいです。
(計算結果で実行)
Worksheet_Calculateイベントを使用する方法
ThisWorkbook Module
Private Sub Workbook_Open()
Call make_Ary(Worksheets(7))
End Sub
標準Module
Option Explicit
Public Ary(2) As Variant
Sub make_Ary(Sh As Worksheet)
Ary(0) = Sh.Range("AG1")
Ary(1) = Sh.Range("E11")
Ary(2) = Sh.Range("Q50")
End Sub
Sub SH_Visible(Sh As Worksheet)
'基本的な条件分岐はご説明をコードに変えるだけです
'メイン処理は文頭を参考に、ご自身でお願いします。
End Sub
シート7 Module
Option Explicit
Private Sub Worksheet_Activate()
Call SH_Visible(ActiveSheet)
Call make_Ary(ActiveSheet)
End Sub
Private Sub Worksheet_Calculate()
Dim Rng As Range, r As Range
Dim n As Long
Set Rng = Range("AG1,E11,Q50")
For Each r In Rng
On Error Resume Next
If Ary(n) <> r Then
If Err.Number = 0 Then
Call SH_Visible(ActiveSheet)
Call make_Ary(ActiveSheet)
Exit For
End If
On Error GoTo 0
End If
On Error GoTo 0
n = n + 1
Next
End Sub
プロシージャ引数については多くマクロが登録されている可能性を考え
呼び出しが出来、ダイアログに表示させない為の処置です
各処理、ロジックの説明は不要と思われるので割愛します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
ハイパーリンクを値貼り付け
Excel(エクセル)
-
リストボックスについて
Excel(エクセル)
-
excelの名前のカウント方法
Excel(エクセル)
-
4
Excelで連番を振る方法について
Excel(エクセル)
-
5
エクセルのセル中で最初の0を表示する方法
Excel(エクセル)
-
6
エクセル相違の発見
Excel(エクセル)
-
7
Excel エクセルってなんですか? なぜ人気があるのかも教えてください
Excel(エクセル)
-
8
複数のテキストファイルをexcelでそれぞれ別シートに書き出したい
Excel(エクセル)
-
9
Excelのシートの表示、非表示の方法について教えてください。
Excel(エクセル)
-
10
IF関数を用いてのリスト作成
Excel(エクセル)
-
11
Excelで「1,2,3,4,5」を「1-5」とまとめることはできますか?
Excel(エクセル)
-
12
Excelの行削除について。 sheetが300sheetあります。それぞれ同じ形式のデータが貼り付
その他(Microsoft Office)
-
13
ワイルドカードについて。
Excel(エクセル)
-
14
(Excel)最小限のデータ入力で別シートに転記しリストを作成したい。
Excel(エクセル)
-
15
エクセルについて質問です。
Excel(エクセル)
-
16
Excelの別シートへの反映方法を教えてください。
Excel(エクセル)
-
17
PC操作ログの集計について良い方法を教えてください
Excel(エクセル)
-
18
C2に文字が入力された時に、A2B2にA1B1にかかれた物を自動入力されていくような物が作りたいです
Excel(エクセル)
-
19
Excelが何か変わった…
Excel(エクセル)
-
20
元データから連続5日以上だった人を抽出したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
EXCEL:同じセルへどんどん足し...
-
5
エクセル 計算式も入っていない...
-
6
Excelで同じシートのコピーを一...
-
7
エクセルVBAでパスの¥マークに...
-
8
Excelで金銭出納帳。繰越残高を...
-
9
VBAでシートコピー後、シート名...
-
10
EXCELで同一フォーマットのシー...
-
11
【Excel】 左のシートの特定セ...
-
12
シートの保護のあとセルの列、...
-
13
sumif関数を使って複数シートに...
-
14
複数シートの特定の位置に連番...
-
15
エクセルでファイルを開いたと...
-
16
別シート参照のセルをシート毎...
-
17
エクセルで前シートを参照して...
-
18
VBA セルの値と同じ名前のシー...
-
19
excelで会議室予約表の作成(マ...
-
20
複数のシートの同じセルに入力...
おすすめ情報
公式facebook
公式twitter