2016-07-09 19 views
0

Excel VBAを初めて使用していますが、MatlabとC++のマイナーコード期限があります。オプションExplicit、ワークシート変更イベント、Excel VBA

私は特定のセルは、ドロップダウンリストから特定のテキスト文字列を含むように変更された場合のMsgBoxメッセージを表示することを意図し、次のコードを書かれている:

Options Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$C$7" Then 
     If Range("C7").Value = "Blue home" Then 
     MsgBox "Hello world!" 
     End If 
    End If 
End Sub 

は、私は、次のエラーメッセージが表示されます。コンパイルエラー:外部プロシージャが無効

コードから明示的なオプションを削除し、VBEのツールでrequire変数宣言オプションをオフにすると、コードが機能します。したがって、オプションの明示的な行が問題を引き起こします。

オプションに明白な問題を引き起こす原因は何ですか?コード内に宣言する必要のある変数があることは実際には分かりません。

ありがとうございました!

+6

それは 'オプションExplicit'ない'オプションExplicit'です。 – Jeeped

+1

あなたの 'Worksheet_Change()'サブは同じワークシートのセルを編集する必要があり、 'If Target.Address ="の直後に 'Application.EnableEvents = False'を置く必要があります$ C $ 7" Then'ステートメントと ' Application.EnableEvents = True'対応する 'End If'の直前 – user3598756

+1

コードが通常のコードモジュールですか?ワークシート・コード・モジュールに属します。 –

答えて

-1

Jeepedは、あなたはそれが以下のようになります間違ったことを綴った彼のコメントで正しいです:

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$C$7" Then 
     If Range("C7").Value = "Blue home" Then 
     MsgBox "Hello world!" 
     End If 
    End If 
End Sub 
関連する問題