![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になっております。
ご教授お願い致します。
ユーザーフォームに1~20のチェックボックスがあり
一つでもチェックボックスがONの場合は登録
チェックボックスがすべてOFFの場合は登録しないと言うもの作成したいのですが
うまく行きません。
Dim cb As CheckBox
For Each cb In ActiveSheet.CheckBoxes
If cb.Value = xlOff Then
MsgBox "選択してください"
Else
MsgBox "登録"
End If
Next cb
宜しくお願い致します。
No.6ベストアンサー
- 回答日時:
ElseIf .TextBox11.Value = "" Then は
If Me.Controls("CheckBox" & i) = false Then にかかっています
なので
For i = 1 To 20
If Me.Controls("CheckBox" & i) = false Then
MsgBox "選択してください"
Exit Sub
End If
Next
If .TextBox11.Value = "" Then
か、Next位置を条件外にする必要がありますが
条件外に出す場合、ループの意味する目的に差異が生じ合理的なループではなくなります。まぁ、、動くけれども。
複数条件があるようでしたら、準じチェックを行って 該当外が生じた段階でループなどを抜けMsgBox を出し終了するのが良いと思います。
更に、userformのコントロールにはイベントがありますので
グローバル変数やStatic変数を活用して入力、チェック動作を行った時に
フラグを建てる方法なども考えられますね。
>質問を整理して再度、伺います
との事なのでタイミングが合えばよろしくお願いします。
No.7
- 回答日時:
こんにちは。
ユーザーフォームだと、No.6さんの回答と同じ様に、なるかと思います。
因みに、
すべてのチェックボックスがoffの場合はメッセージを、は良いですが、
そうでない場合の登録について、下記のどちらなのでしょうか?
①1つでもonの時は、1回だけ登録をする。全てonでも登録は1回だけ。
②それぞれがonの時に、その都度、登録をする。1~20回のどれか。
私の場合は、①だと思って回答したのですが、質問者さんは②が希望?
No.4
- 回答日時:
#3です
myflag? userform1ですよね。
.Label4.Caption = "残業" And .TextBox5.Value = "" この条件は限定条件なので最初に振り分ければ良いかと、、
私的にはすぐ抜ける書き方をしますが、、
Dim i As Integer
With UserForm1
If .Label4.Caption = "残業" And .TextBox5.Value = "" Then
MsgBox "時間外勤務時間の入力がありません。"
Exit Sub
End If
For i = 1 To 20
If .Controls("CheckBox" & i) = True Then
登録実行
Exit Sub
End If
Next
MsgBox "選択してください"
End With
的違いをしているかも知れませんのでここ迄で
Qchan1962さん
Exit Sub が使用したことがなかったので。If~ElseIF~としていました。
Exit Subを勉強してみます。
有難う御座います
No.3
- 回答日時:
こんにちは
ユーザーフォームで良いですか?
コントロールオブジェクト名を変更していないのなら
簡単な方法での一例です
Dim i As Integer
For i = 1 To 20
If Me.Controls("CheckBox" & i) = True Then
MsgBox "登録"
Exit Sub
End If
Next
MsgBox "選択してください"
こんな感じで、
No.1
- 回答日時:
おはようございます。
例えば下記の様に、全てチェックした後に、判定して処理でしょうか?
Dim cb As CheckBox,myFlag as Boolean
myFlag = False
For Each cb In ActiveSheet.CheckBoxes
If cb.Value = xlOff Then
Else
myFlag = True
End If
Next cb
if myflag then
MsgBox "登録"
end if
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱ufjニコスカードのVIZAを使...
-
番号の登録しない人っていますか?
-
regsvr32.exe による DLLの登...
-
マッチングアプリにいる女性に...
-
Benesseのマナビジョンで、氏名...
-
fc2登録について
-
ユーチューブのお気に入りが消...
-
電話番号を変えたら、Yahoo!知...
-
特定商工業者?(法定台帳登録...
-
おせえてゴーの登録で
-
ウイルスバスター、登録したP...
-
自販機でモバイルPASMOが使えない
-
X、嫌がらせで通報されまくって...
-
ジャニーズウェブについてです...
-
自筆と直筆の違いを教えてくだ...
-
習い事の退会届の書き方
-
みんカラの退会方法を教えてく...
-
質問削除ばっかりされるんやけ...
-
至急!!ペアーズ登録直後に強...
-
gooブログを閉鎖したいのですが?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱ufjニコスカードのVIZAを使...
-
マッチングアプリにいる女性に...
-
regsvr32.exe による DLLの登...
-
fc2登録について
-
この教えてgoo!のプロフィール...
-
特定商工業者?(法定台帳登録...
-
誰も電話帳にSNSプロフィールっ...
-
自販機でモバイルPASMOが使えない
-
知恵袋登録したくて認証コード...
-
ユーチューブのお気に入りが消...
-
Benesseのマナビジョンで、氏名...
-
ジャニーズショップの同行者登...
-
中国のファイル共有サイト115.c...
-
九州電力の電気代・使用量をHP...
-
番号の登録しない人っていますか?
-
電話番号を変えたら、Yahoo!知...
-
すべてのチェックボックスがoff...
-
ベガプロモーションというライ...
-
シェルスターレックスカード NI...
-
私が精神病のことをどこから知...
おすすめ情報
with userform1
If myFlag Then
MsgBox "選択してください"
ElseIf .Label4.Caption = "残業" And .TextBox5.Value = "" Then
MsgBox "時間外勤務時間の入力がありません。"
else
登録実行
end if
end with
上記のように複数条件で切り分けなのですが、うまく行きません。
Qchan1962さん回答ありがとうございます。
For i = 1 To 20
If Me.Controls("CheckBox" & i) = false Then
MsgBox "選択してください"
Exit Sub
Next
ElseIf .TextBox11.Value = "" Then
MsgBox "事由/業務内容の入力がありません。"
else
MsgBox "登録"
End If
forに対するNextがありませんとなります。
mygoonicknameさん、回答有難う御座います
If myFlag Then
MsgBox "選択してください"
ElseIf .Label4.Caption = "残業" And .TextBox5.Value = "" Then
MsgBox "時間外勤務時間の入力がありません。"
Else
登録実行
End if
上記のように複数条件で切り分けなのですが、うまく行きません。
mygoonickname さん、ご回答有難うございます。
For Each cb In ActiveSheet.CheckBoxes
こちらは、アクティブシートですが
ユーザーフォームにする場合はどうすればよいでしょうか?
mygoonicknameさん
回答有難う御座います。
お返事遅くなりました。
①1つでもonの時は、1回だけ登録をする。全てonでも登録は1回だけ。
が希望です。
宜しくお願い致します。