データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
こんにちは。
新たに提示されているコードにはいくつか問題点がありますので、以下に書き出してみました。
- Worksheet_Change イベントは『シートモジュール』に記述しなければ起動しません。
Auto_Open と同一モジュールに書いているということは、『標準モジュール』に記述しているように思えるので。 2. Target.Value = "研修" Or "出張" は間違い。
正しくは、
Target.Value = "研修" Or Target.Value = "出張"
と書かなければなりません。 3. If の入れ子の間違い。
提示されているコードのままだと、『 If Not Intersect(Target, Range("F9:BP9")) Is Nothing Then 』が TRUE か FALSE か判断されるのが、『 If Not Intersect(Target, Range("F7:BP7")) Is Nothing Then 』が TRUE の場合だけになってしまいます。
まず1、について確認ですが、もし『標準モジュール』に『 Private Sub Worksheet_Change(ByVal Target As Range) 』以下のコードを記述されているのでしたら、これを『シートモジュール』(例えば Sheet1 のシートモジュール)に移さなければなりません。(『標準モジュール』のほうには、新たに提示されているコードの上から 5行を残します。)
ただし、コードに上記2、3、のような間違いがありますので、まずは『シートモジュール』のコードウィンドウを開いたうえで、下記のようなコードを記述してみてください。(下記をコピー・貼り付けでも構いません。)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F7:BP7,F9:BP9")) Is Nothing Then
If Target.Value = "研修" Or Target.Value = "出張" Then
MsgBox "出張先を、下のセルに入力して下さい。", vbOKOnly
End If
End If
End Sub
※ Option Explicit はモジュール単位で宣言する必要がありますので、必要ならば上記のように記述してください。
※ Range オブジェクトのセル範囲の指定方法にも注目してください。詳しくはネットで検索を。
<『シートモジュール』のコードウィンドウを開く方法。>
図1で左上にある「プロジェクトエクスプローラー」の中の「 Sheet1(Sheet1) 」(赤枠で囲っている箇所)をダブルクリックすればコードウィンドウが開きます。「 Sheet1(Sheet1) 」の ( ) の中にはシート名が入ります。
・図1
以上です。
Windows10 と Excel2016 の組み合わせで動作確認しています。
ご参考になれば幸いです。