2012-03-22 30 views
3

を挿入する私はエクセルVBAを使用し、そのようなworksheet_changeイベント持っている:私は命名に変更を加える際Worksheet_Changeイベント与えて実行時エラー13 - 型の不一致行

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target = Range("rel_type") Then 
     --some code 
    End If 
End Sub 

このコードは素晴らしい作品を範囲 "rel_type"。しかし、私はスプレッドシート内の他の場所に行を挿入すると、私は実行時エラー13 - その不一致の最初の行に不一致を取得します。誰かが回避策を知っていますか?私はWorksheet_Changeイベントに精通していないので、良い文書(または少なくともこのエラーが発生する理由を参照する文書)を見つけることができないようです。ありがとう。

答えて

4

これはあなたの試みですか?

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    If Not Intersect(Target, Range("rel_type")) Is Nothing Then 
     Application.EnableEvents = False 

     '--some code 
    End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

フォロー

はい、それは私が必要なまさにそれです!ありがとう!それは魅力のように働いた。私はIntersectやEnableEventsオプションに慣れていなかったので、私はここでたくさんのことを学びました - それは感謝しています。 - 16秒前rryanp

INTERSECT:交差法の範囲、2つ以上の交差点を表し、Rangeオブジェクトを返します。

このリンク

トピックを参照してください:交差法[Excel 2003のVBAリファレンス]

リンクIntersect - MSDN

ENABLEEVENTSを:あなたが防ぐためにEnableEventsプロパティを使用する必要がありますVBAコードが開始する可能性のある無限ループ。このプロパティをFalseに設定すると、VBAはイベントを発生せず、Worksheet_Changeイベントは1回だけ実行されます。また、次回にイベントが正常に呼び出されるようにするには、必ずEnableEventsプロパティをTrueに設定してください。

HTH

シド

+0

はい、それは私が必要なまさにそれです!ありがとう!それは魅力のように働いた。私はIntersectやEnableEventsオプションに慣れていなかったので、私はここでたくさんのことを学びました - それは感謝しています。 – rryanp

+0

@rryanp:私のポストをもっと情報で更新しました:) –

関連する問題