それもChatGPT!?と驚いた使用方法を教えてください

下記の2つのVBAコードを一つにまとめる方法を教えてください。
下記のコードは以前教えて頂いたコードを少しアレンジして作成しております。
1つ目のコードは
セル「F18」に各「昇降機_エレベーター」「昇降機_エスカレーター」「昇降機_ダムウエーター」
「昇降機_いす式昇降機」のいずれかが表示された場合に、非表示シート「昇降機第2号様式」が表示又は、「F18」の各表示がなければ「昇降機第2号様式」が非表示となります。
2つ目のコードも同じく
セル「F18」に各「昇降機_エレベーター」「昇降機_エスカレーター」「昇降機_ダムウエーター」
「昇降機_いす式昇降機」のいずれかが表示された場合に、非表示シート「昇降機第2号様式」が表示又は、「F18」の各表示がなければ「昇降機第5号様式」が非表示となります。
このコードを
「F18」に各「昇降機_エレベーター」「昇降機_エスカレーター」「昇降機_ダムウエーター」
「昇降機_いす式昇降機」のいずれかが表示された場合に、非表示シート「昇降機第2号様式」と「昇降機第5号様式」の2つのシートが表示又は、「F18」の各表示がなければが非表示となるように出来る方法を教えてください。
1つ目のコード
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("F18") = "昇降機_エレベーター" Or _
Range("F18") = "昇降機_エスカレーター" Or _
Range("F18") = "昇降機_ダムウエーター" Or _
Range("F18") = "昇降機_いす式昇降機" Then
Sheets("昇降機第2号様式").Visible = xlSheetVisible
Else
Sheets("昇降機第2号様式").Visible = xlSheetHidden
End If
2つ目のコード
If Range("F18") = "昇降機_エレベーター" Or _
Range("F18") = "昇降機_エスカレーター" Or _
Range("F18") = "昇降機_ダムウエーター" Or _
Range("F18") = "昇降機_いす式昇降機" Then
Sheets("昇降機第5号様式").Visible = xlSheetVisible
Else
Sheets("昇降機第5号様式").Visible = xlSheetHidden
End If
End Sub
以上となります。
宜しくお願い致します。

A 回答 (3件)

No.2の回答者です。


変数WSの指定をしていないので問題がある場合、
 Dim WS As Worksheet
を最初に追加しておいてください。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございます。
早速、試してみます。

お礼日時:2024/03/22 10:52

解決しているようなので、蛇足的な回答ですが。


以下のような書き方もあるということで。

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Range("F18").Value
  Case "昇降機_エレベーター","昇降機_エスカレーター", _
    "昇降機_ダムウエーター","昇降機_いす式昇降機"
   For Each WS In _
   Worksheets(Array("昇降機第2号様式", "昇降機第5号様式"))
    WS.Visible = True
   Next
  Case Else
   For Each WS In _
   Worksheets(Array("昇降機第2号様式", "昇降機第5号様式"))
    WS.Visible = False
   Next
 End Select
End Sub

参考サイト
https://www.relief.jp/docs/excel-vba-or-statemen …
https://daitaideit.com/vba-sheet-hidden/#mokuzi4
    • good
    • 1
この回答へのお礼

回答ありがとうございました。
記者が教えて頂いたコードの方がすっきりしているように思います。
早速試してみます。

お礼日時:2024/03/22 09:47

以下のようにしてください。



Private Sub Worksheet_Change(ByVal Target As Range)
If Range("F18") = "昇降機_エレベーター" Or _
Range("F18") = "昇降機_エスカレーター" Or _
Range("F18") = "昇降機_ダムウエーター" Or _
Range("F18") = "昇降機_いす式昇降機" Then
Sheets("昇降機第2号様式").Visible = xlSheetVisible
Sheets("昇降機第5号様式").Visible = xlSheetVisible
Else
Sheets("昇降機第2号様式").Visible = xlSheetHidden
Sheets("昇降機第5号様式").Visible = xlSheetHidden
End If
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
全て上手くできました。
詳しくコードを教えて頂きまして、感謝いたします。

お礼日時:2024/03/22 09:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報