VB.NETに関する質問です。
画面の一覧(SPREAD等)にチェックボックスがあり、
全てのチェックボックスにチェックがついているかどうかを調べたいです。
「もし一つでもチェックがついていた場合は、チェック処理から即座に抜け、
もし全てのチェックがついていない場合は、エラーメッセージを出力する」
という動作を求めています。
例えば、
For intRowIndex As integer = 0 To MaxRowCount - 1
If CBool(Cells(intRowIndex, checkboxColumn).Value) Then
'' チェックがついている場合
Exit For
Else
If intRowIndex = MaxRowCount Then
'' エラーメッセージ出力
End If
End If
Next
という処理で求める動きは可能ですが、
もう少しスマートなロジックがないかと考えています。
どなたか教えて頂けませんでしょうか?
No.1ベストアンサー
- 回答日時:
MVC的な考えをきっちり入れているのであれば,単純にModelにチェックメソッドを用意するだけです。
Model側もList(Of T)などで管理しているでしょうから,Enumerable.Any拡張メソッドでチェックできます。
ViewとModelの分離をしていないような場合は,コントロール側が内部の要素情報をIEnuemrableで得られることが多いでしょうから,
それに対してAny拡張メソッドを適用するだけです。
仮コードは
Cells.Cast(Of Row)().Any(Function (r) CBool(r(column).Value))
というような感じでしょうか。
# 標準コントロールにSPREADなるものはなかったはず。
No.2
- 回答日時:
状況がよく分からないので、具体的なコードは載せれませんが
昔はやったビットテーブルの処理ロジックなどに置き換えられるなら、
簡単に出来ると思います。
スプレッドのチェック状態を保持しているビット配列の
ハッシュ値が0なら全てチェックがついていないと見なして
処理を終了等。
まぁスプレッドのチェック状態を保持したビット配列を用意する方がめんどくさいと思いますが。
ちなみにループによる処理自体は、意図が分かりやすいコードなので
第三者がメンテナンスを行う可能性がある場合は、そのコードはそれで十分だと思いますよ。
逆にコアなアルゴリズムを入れると、メンテナンスも難しくなりますし
意図がどんどん分かりにくくなっていく傾向があるので
業務系アプリ等で利用するなら、あまりお勧めしません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVA ID重複処理
-
再度、スレッドが実行中かどう...
-
無限ループをわざと作って時計...
-
ExcelVBA で文字列の特定の文字...
-
ブラウザを閉じた後のサーバ側...
-
バッチって何でしょうか?
-
ラベルの表示までが異常に遅い...
-
画面系イベントの優先度を上げたい
-
Ajaxの実行速度と読み方について
-
C#でバックグラウンド処理から...
-
doGetとdoPostの違い
-
java(swing)で、登録ボタンを押...
-
JavaScriptからJAVAクラスを呼...
-
スレッド1とスレッド2を交互に...
-
C#の処理をリアルタイムに表示...
-
Javaプログラムからポップアッ...
-
素数判定を再帰処理で
-
tryの終了
-
ラジオボタンの選択判定
-
Javaでのデバッグコード削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
数値の定数を付ける時
-
Javaでのデバッグコード削除
-
C#で別スレッドの終了を知りたい
-
[Java] while(true)の意味
-
Javaプログラムからポップアッ...
-
Tomcatのスレッドを破棄する方法
-
ラジオボタンの選択判定
-
JavaScriptからJAVAクラスを呼...
-
素数判定を再帰処理で
-
PHPでDB処理中にプログレスバー...
-
Javaアプリケーション実行の返...
-
WPF C#でF10のイベント取得方法...
-
doGetとdoPostの違い
-
switch文の中に、throws new Ex...
-
Tomcat高負荷時の設定について
-
ラベルの表示までが異常に遅い...
-
ExcelVBA で文字列の特定の文字...
-
JDBCでテーブルUPDATE後の再検...
-
SwingUtilities.invokeLater(ne...
おすすめ情報