Discussion:
Changeイベントと入力規則
(too old to reply)
ホーリー
2007-12-13 04:29:01 UTC
Permalink
はじめまして。エクセルおよびVBA初心者ですので、おかしな質問でしたらお許しください。

WindowsXPでExcel2003を使用しています。

質問: セル(A1)の内容が変更されたら、マクロを実行するようにWorksheet_Changeを定義しているのですが、セル(A1)に入力規則も設定しているため、入力規則エラーとなった場合、Changeイベントを複数回繰り返してしまうと言う問題が発生しています。
入力規則エラーになった場合に、エラーコードなどを取得して回避できないかと考えているのですが、そのエラーコードを取得できるのかさえ分かりません。
エラーコードを取得する方法はありますでしょうか?また、エラーコード取得不可の場合、何か良い回避方法があれば教えてください。
KMisawa
2007-12-13 05:58:24 UTC
Permalink
直接の回答になりませんが、 A1セル に入力規則を設定せずに次のようにしてはいかがですか。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.adress = "$A$1" Then
If targetvalue = XXXX Then 'ここに入力規則の条件を記述
Call 実行マクロ名
   Else
Msgbox "A1への入力値がエラーです"
End If
End If
End Sub
Post by ホーリー
はじめまして。エクセルおよびVBA初心者ですので、おかしな質問でしたらお許しください。
WindowsXPでExcel2003を使用しています。
質問: セル(A1)の内容が変更されたら、マクロを実行するようにWorksheet_Changeを定義しているのですが、セル(A1)に入力規則も設定しているため、入力規則エラーとなった場合、Changeイベントを複数回繰り返してしまうと言う問題が発生しています。
入力規則エラーになった場合に、エラーコードなどを取得して回避できないかと考えているのですが、そのエラーコードを取得できるのかさえ分かりません。
エラーコードを取得する方法はありますでしょうか?また、エラーコード取得不可の場合、何か良い回避方法があれば教えてください。
unknown
2007-12-13 06:47:01 UTC
Permalink
Post by KMisawa
直接の回答になりませんが、 A1セル に入力規則を設定せずに次のようにしてはいかがですか。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.adress = "$A$1" Then
If targetvalue = XXXX Then 'ここに入力規則の条件を記述
Call 実行マクロ名
   Else
Msgbox "A1への入力値がエラーです"
End If
End If
End Sub
早速の回答ありがとうございます。
私も入力規則を設定せずに、マクロ内で入力条件を設定しようかと試していたのですが、エラーになっても無視して他のセルを選択できてしまうので困っていました。
"KMisawa"さんからの回答で、入力規則を設定していてもtargetvalueが入力規則の条件でなければ、スルーさせてしまえば良い事に気づきました。
こんなことに気づかないなんてちょっと恥ずかしいですが、おかげさまでうまく処理できました。どうもありがとうございます。
Loading...