とっておきの手土産を教えて

作業ブックのシートに下記のコードを設定しております。
If Target.Address = "$F$15" Then
Call 担当者情報総合
End If
このコードは、セルF15に不特定の文字が表示されるとマクロ「担当者情報総合」が実行されますが、
このコードに「指定シート名」を追加できる方法を教えてください。
指定シート名は「質疑」としてください。
同じく
If Range("$F$18").Value = "確認申請" Then
Call 確認申請関係シート表示
End If
このコードは、セルF18に「確認申請」と文字が表示されるとマクロ「確認申請関係シート表示」が実行されますが、
このコードに「指定シート名」を追加できる方法を教えてください。
指定シート名は「質疑」としてください。
以上となります。
宜しくお願い致します。

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    申し訳ありません、このコードをどこに追加をすればよろしいでしょうか?
    下記のように追加をするとエラー1004が出てしまい、コードの
    activesheet.name= "質疑"が黄色くなってしまします。
    Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets.add
    ActiveSheet.Name = "質疑"
    宜しくお願い致します。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/03/05 09:33

A 回答 (4件)

解釈2の場合、以下の2つの方法があります。


案1.シートモジュールに登録する。
質疑のシートモジュールに、作業ブックのシートに登録してあるものと全く同じものを作成する。

案2.Thisworkbookに以下のプロシージャを登録する。
①現行の作業ブックのシートに登録してあるプロシージャは削除する。
このシートのシート名は、「●●」と仮定します。

②Thisworkbookに以下のプロシージャを登録する。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "●●" Or Sh.Name = "質疑" Then
If Target.Address = "$F$15" Then
Call 担当者情報総合
End If
End If

If Sh.Name = "●●" Or Sh.Name = "質疑" Then
If Range("$F$18").Value = "確認申請" Then
Call 確認申請関係シート表示
End If
End If
End Sub


そうすると、シート名が●● 又は 質疑 で、
セルF15に不特定の文字が表示されるとマクロ「担当者情報総合」が実行されます。

同様に、シート名が●● 又は 質疑 で、
セルF18に「確認申請」と文字が表示されるとマクロ「確認申請関係シート表示」が実行されます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
親切にコードまで教えて頂きまして
感謝します
早速試してみます

お礼日時:2024/03/06 05:56

>このコードに「指定シート名」を追加できる方法を教えてください。


>指定シート名は「質疑」としてください。

これは、2つの解釈ができます。

解釈1
If Target.Address = "$F$15" Then
Call 担当者情報総合
End If
に、以下の機能を追加したい。
セルF15に不特定の文字が記入された時、
担当者情報総合 を実行し、
更に、新規シート「質疑」 を追加したい。

この解釈での回答がNo1の方です。

解釈2
If Target.Address = "$F$15" Then
Call 担当者情報総合
End If
現在の機能は
セルF15に不特定の文字が記入された時、
担当者情報総合 を実行しているが、
このシートは シート「質疑」 ではない。
シート「質疑」上のセルF15に不特定の文字が記入された時にも、
担当者情報総合 を実行できるようにしたい。

この解釈での回答がNo2の方です。

あなたが希望されるのは、どちらの解釈でしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます 
解釈2になります。

お礼日時:2024/03/05 20:02

Worksheet_Changeは特定のシートに変更があった場合に呼び出されます。

これを「質疑」シートに書いておけばシート名を指定する必要はありません。逆に、他の場所に書いて「質疑」シートの変更を捉えることはできません。
Range("$F$18")の方は、ThisWorkbook.Sheets("質疑").Valueと書けば、他の場所に書いても「質疑」シートのF18セルを参照できます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考にさせて頂きます。

お礼日時:2024/03/05 11:51

sheets.add


activesheet.name= "質疑"

を追加すればよいかと
この回答への補足あり
    • good
    • 0

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


おすすめ情報