- ベストアンサー
エクセルマクロの入力規則と色付けの問題について
- Excel2003の環境で、セルの入力規則を設定しているが、VBAでプログラミングしていると入力規則違反が発生した場合にUNDOメソッドが失敗するエラーが発生する問題があります。
- 解決策がわからず困っており、質問者は助言を求めています。
- 質問者は以下のプログラムの一部を示しており、UNDOメソッドが失敗する原因が特定できていない状況です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足への回答 > E10:E57とI10:I60の数値が変更になった時に色を付けるので > 取敢えずテストでE列だけ処理を行うようにしてたのですが > 方法を変えないといけないのですね。 ActiveCellの列を見ているから駄目なだけです。 以下の様に変数「icolalf」にTargetの列を入れればカーソル移動で確定しても大丈夫だと思います。 icolalf = ActiveCell.Column ↓ icolalf = Target.Column
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
コードの途中に出てくる t_target はTargetの間違いか、提示漏れでしょうか。 そう仮定して回答します。 通常、セルに値を入れた後、ActiveCellが移動するので、TargetとActiveCellのアドレスは異なりますが、入力規則に引っかかった場合、ActiveCellが移動しないためアドレスが一緒になりますからそこを利用しては? 具体的には If icolcnt = 1 And irowcnt = 1 And icolalf = 5 Then ↓ If icolcnt = 1 And irowcnt = 1 And icolalf = 5 And (Target.Address <> ActiveCell.Address) Then ところで、入力した後のActiveCellがE列で無い場合処理を行わないようになっていますが、セルに値を入れた後、Enterではなくカーソルで左右に移動して確定した場合も処理が行われませんがよろしいんですか?
お礼
お礼が後になってしまい申し訳ありません。 コーディング方法から不具合の指摘までありがとうございます。
補足
mt2008様 ありがとうございます。確かにカーソル移動の場合に処理が行われません。 Enterキーでの移動しか考えていませんでした。 E10:E57とI10:I60の数値が変更になった時に色を付けるので 取敢えずテストでE列だけ処理を行うようにしてたのですが 方法を変えないといけないのですね。
- mt2008
- ベストアンサー率52% (885/1701)
補足願います。 これはどういうイベントとして書いた物ですか。 Worksheet_Changeイベント?
お礼
mt2008様 ありがとうございます。 ご教授頂いた内容で動きました。
補足
mt2008様 Worksheet_Changeイベントに記述しています。
お礼
mt2008様 ありがとございます。 ご教授頂いた修正をし思った動きになりました。