- ベストアンサー
VBAでシート上のTEXTBOXの値を変更するとイベントが無限に入る。
ExcelのVBAでシート上に貼り付けたCheckBoxで 内容を変更したくない場合、 下記のようなプログラムを作りました。 Private Sub CheckBox1_Click() MsgBox "内容を変更しないでください" If CheckBox1.Value = True Then CheckBox1.Value = False Else CheckBox1.Value = True End If End Sub すると、イベントが入りまくって、抜け出せなくなりました。 セルの場合は、Application.EnableEvents = False を使用してイベントを止めることができたのですが、 コントロールの場合は、そのような命令が見つかりません。 なにか良い手はないでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 こういうことかな。 (シートモジュールの宣言部に) Private flg As Boolean (イベントプロシージャ) Private Sub CheckBox1_Click() If Not flg Then MsgBox "内容を変更しないでください" flg = True CheckBox1.Value = Not CheckBox1.Value Else flg = False End If End Sub
その他の回答 (2)
- kmb01
- ベストアンサー率45% (63/138)
シートの保護を使えばユーザー操作によるイベントは発生しなくなります。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
Dim blnFlag As Boolean Private Sub CheckBox1_Click() If blnFlag = True Then blnFlag = False Exit Sub End If MsgBox "内容を変更しないでください" blnFlag = True If CheckBox1.Value = True Then CheckBox1.Value = False Else CheckBox1.Value = True End If End Sub とか。
お礼
ありがとうございました。
補足
ありがとうございます。 割り込みを2度入ることをうまく利用していますね。 これを使わせていただきます。 でも、やはり割り込みを止める命令はないのですね。