2017-12-21 4 views
0

タイトルに記載されているように、セルをクリックしてトリガするとマクロがクラッシュします。私はクラッシュやその他の問題なしでこれを2ヶ月使用しましたが、今日は常にクラッシュします。次に、イミディエイトウィンドウで同じ関数を呼び出してマクロを実行しようとしたが、正常に実行されました。私はなぜ、どのようにこれを解決するのだろうかと思っています。あなたの参考のためにセルをクリックしてマクロをトリガした後にExcelがクラッシュする

は、ここに私のコードは、そのワークシートにあります。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
If Target.Address = "$A$2" Then 
    reviewActiveSheetOrder 

End If 

End Sub 

reviewActiveSheetOrderは、私が実行したい機能です、と私はイミディエイトウィンドウでそれを呼び出す場合には、適切に実行することができます。

+0

スタックトレースはありますか? –

+0

クラッシュする行はありますか? – YowE3K

+0

エラーを確認する必要があると約束しました。おそらくreviewActiveSheetOrderのコードを見て、そこに問題があり、先頭にバブリングする必要があるかもしれません。 – Graham

答えて

0

はまた、二重のセルをクリックした後、あなたがEdit Modeであるとして多分それが問題を引き起こしている、別のプロシージャを呼び出す前にCancel = Trueを置く

... reviewActiveSheetOrderを呼び出す前に、イベントを無効にし、それが助けかどうかを確認してください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
If Target.Address = "$A$2" Then 
    Cancel = True 
    Application.EnableEvents = False 
    reviewActiveSheetOrder 
    Application.EnableEvents = True 
End If 
End Sub 
+0

3行のコードを追加してもクラッシュしませんでしたが、マルコを実行していないようです "cancel = True"という行だけを追加しても問題ありませんが、マクロは動作していないようです –

+0

あなたはその場合にイベントが再び有効にならないため、コードが完了する前にコードを一時停止しませんでした。イベントが有効かどうかをチェックするには、 'Immediate Window'に'?Application.EnableEvents'と入力してEnterを押します。あなたが得るものは、「真」か「偽」ですか? 'False'を取得した場合は、手動で再度有効にして、イミディエイトウィンドウに' Application.EnableEvents = True'と入力し、Enterキーを押してから、A2をダブルクリックしてコードが今回実行されているかどうかを確認します。また、Application.EnableEvents = Trueという行に 'Breakpoint'を置いて、完了後にコードが取得されるかどうかを確認してください。 – sktneer

関連する問題