
YES/NOを入力させる為の下記のVBAにおいて、チェックボックス1をチェックすると、アの部分でチェックボックス2の解除を行う関係で?、シート上でチェックボックス2を操作していないのにもかかわらず、勝手にCheckBox2_Click()に入り、命令文イを実行してしまいます。
ただ単にSub CheckBox1_Click()のルーチンの最後までの処理で終わりたいのですが、どうしたらよいのでしょうか。
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
Sheets("sheet1").Range("A1") = 1
Sheets("sheet1").Range("A2") = 0
CheckBox2 = False・・・ア
Else
Sheets("sheet1").Range("A1") = ""
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2 = True Then
Sheets("sheet1").Range("A1") = 0
Sheets("sheet1").Range("A2") = 1
CheckBox1 = False
Else
Sheets("sheet1").Range("A2") = ""・・・イ
End If
End Sub
No.4ベストアンサー
- 回答日時:
#1です。
未選択の状態がありえるのですね。
その場合チェックボックスの方で良いと思います。
以下のコードでいかがでしょうか?
Private Sub CheckBox1_Click()
If Me.CheckBox1.Value = True Then
Me.CheckBox2.Value = False
End If
Range("A1").Value = IIf(Me.CheckBox1.Value, 1, "")
End Sub
Private Sub CheckBox2_Click()
If Me.CheckBox2.Value = True Then
Me.CheckBox1.Value = False
End If
Range("A2").Value = IIf(Me.CheckBox2.Value, 0, "")
End Sub
IIf(Me.CheckBox1.Value, 1, "")はチェックボックスの状態がTrueであれば1をFalseであれば空文字を返す構文です。
If~Else~End Ifを一行で記述しているだけです。
参考になりますでしょうか?
ありがとうございます。
オプションボタンも少し勉強してみたのですが、どうも私が意図してるようには動いてくれませんでした。
Xenさんが教示してくれたこの方法だと、ほぼ私のやりたいことが実現できそうです。
No.3
- 回答日時:
本件はチェックボックスの例ですが、オプションボタンを2つ貼り付け、各々のプロパティでLinkedCellをA1セルとA2セルに設定すると、
またGroupNameが全てSheet1になるのを、3・4つ以上のボタンがあって、複数グループにする場合は、グループ別に同一文字列記号に設定しなおすと、質問のようなプログラムは不要になります。
ただ値がFALSE、TRUEになりますが、小生はこれを0、1にする書式設定がわかりません。
CheckBoxの場合
http://www21.tok2.com/home/vbalab/bbs/c-board.cg …
など載ってました。
この回答への補足
お世話になります。実はこの種のボタン使用するの初めてで、アンケート用紙に既に150個ものボタンを作ってしまい、いざ試してみると想定外の動きをしてしまったのです。みなさんのお答えではオプションボタンがいいらしいですね!書かれたコマンドもよく分からない状況なので、勉強してやり直そうと思います。だからポイント発行まで時間かかるかも知れませんがご容赦くださいませ。
補足日時:2005/09/29 23:15No.2
- 回答日時:
こんばんは。
本来は、CheckBox ではなくて、OptionButton の使い方ですね。なぜ、CheckBox でなくてはならないのか良く分りませんが、コードを読んでいると、CheckBoxの片方で、Offにした時に機能を持たせているようですね。贅沢な使い方のようですね。確かに、こればかりは、OptionButtonでは、真似できないような気がしますが、計画倒れになっちゃいましたね(^^\ でも、もっと贅沢に使うなら、MouseDownなんていうのを使えば、もっといろいろ使えます。
>単にSub CheckBox1_Click()のルーチンの最後までの処理で終わりたいのですが、
それなら、単に、フラッグをつければよいだけのことです。でも、なるべく、プロパティのValueなどを入れてくださいね。後々のエラーの原因になりますから。
Dim flg As Boolean
Private Sub CheckBox1_Click()
If flg = True Then Exit Sub
If CheckBox1.Value = True Then
Sheets("Sheet1").Range("A1").Value = 1
Sheets("Sheet1").Range("A2").Value = 0
flg = True
CheckBox2.Value = False
Else
Sheets("Sheet1").Range("A1") = ""
End If
flg = False
End Sub
Private Sub CheckBox2_Click()
If flg = True Then Exit Sub
If CheckBox2.Value = True Then
Sheets("Sheet1").Range("A1").Value = 0
Sheets("Sheet1").Range("A2").Value = 1
flg = True
CheckBox1.Value = False
Else
Sheets("Sheet1").Range("A2").Value = ""
End If
flg = False
End Sub
まあ、とりあえず、試してみてください。
No.1
- 回答日時:
別途フラグを使用すれば出来ますが、オプションボタンではだめなのでしょうか?
オプションボタンの右クリックメニュー「プロパティ」にある「GroupName」に同じ値(例:Q1)を設定すれば次の様なコードで良いのですが....
Private Sub OptionButton1_Click()
Call Cell_Set
End Sub
Private Sub OptionButton2_Click()
Call Cell_Set
End Sub
Private Sub Cell_Set()
Range("A1").Value = IIf(Me.OptionButton1.Value, 1, 0)
Range("A2").Value = IIf(Me.OptionButton2.Value, 1, 0)
End Sub
この回答への補足
ありがとうございます。いただいたアドバイスがよく分からないので!かみ砕いてお願いします。
オプションボタン1をクリックするとCell_Setと云うルーチンが実行されるのですね?このルーチンのRange・・・は、何を意味してますか?
私は、YESの場合、A1に1、Noの場合A2に0、未選択の場合、A1,A2にNULLデータを入力したかったのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) シートを選択して、1つのPDFにしたいのですが。 5 2022/10/03 20:18
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
Excel ラジオボタンのリセット...
-
ユーザーフォームをショートカ...
-
UPS警告音を止めたい
-
excel 2000でのマクロボタン作成で
-
EXCELのマクロが 実行時エラー5...
-
マクロを登録しているボタンが...
-
Dドライブのアクセス許可
-
複数シートのボタンに同一の動...
-
Excel vab でのボタンの使い分...
-
フォームコントロールから作っ...
-
入力済み、選択したセルに連動...
-
パナソニックKX-PW22CLHの電話...
-
InputBox関数でキャンセルボタ...
-
マクロで作ったボタンのサイズ...
-
Excelで、ボタンにコメントをつ...
-
オブジェクト名をVBAで指定...
-
YouTube見てるとたまに勝手にSi...
-
【Excel VBA】マクロボタンを表...
-
エクセルVBA フォームへ動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
【Excel VBA】マクロボタンを表...
-
UPS警告音を止めたい
-
エクセルの画面にユーザーフォ...
-
マクロを登録しているボタンが...
-
EXCELのマクロが 実行時エラー5...
-
複数シートのボタンに同一の動...
-
入力済み、選択したセルに連動...
-
フォームコントロールから作っ...
-
Excelで、ボタンにコメントをつ...
-
Excel ラジオボタンのリセット...
-
エクセルで、オプションボタン...
-
マクロで作ったボタンのサイズ...
-
オブジェクト名をVBAで指定...
-
エクセルでマクロボタンを押す...
-
Accessのフォームでタブの色
-
excel スクロールしても常にボ...
-
ユーザーフォームをショートカ...
-
EXCELの塗りつぶしのボタ...
-
パナソニックKX-PW22CLHの電話...
おすすめ情報