|
■No94863 (お願いします さん) に返信 > ■No94862 (魔界の仮面弁士 さん) に返信 > 魔界の仮弁護士さん、ご返信ありがとうございます。
魔界の仮弁護士? いえ、知らない子ですね
> 漢数字の 二 ではなく、数字の2で問題ありませんでした。
半角の 2 ではなく全角の 2 ですね? それならば StrConv を利用できます。一応 StrConv 版も掲載しておきます。
Private Sub 実行ボタン_Click(sender As Object, e As EventArgs) Handles 実行ボタン.Click Dim boxes As CheckBox() = {CheckBox1, CheckBox2, CheckBox3} Dim count As Integer = boxes.Count(Function(c) c.Checked) 'Dim msg As String = CStr(count) & "つチェックしました。" Dim msg As String = StrConv(CStr(count), vbWide, &H411) & "つチェックしました。" Select Case count Case 0 Array.ForEach(boxes, Sub(c) c.Checked = True) MsgBox("チェックされた", vbInformation) Case boxes.Length Array.ForEach(boxes, Sub(c) c.Checked = False) MsgBox("解除された", vbInformation) Case Else MsgBox(msg, vbInformation) End Select End Sub
この場合、CheckBox の数が変更されたとしても同じロジックを使うことができますが、 数が 10 以上になる場合、日本語として「10つ」という言い方はしないため、 メッセージを工夫する必要があるでしょう。
『どれもチェックされていない時』と、『すべてチェックされていない時』だけ ForEach にてチェック反転のコードを記述すると共に、 メッセージ内容を、個数表示ではなく全チェック/全解除の通知に変更しています。 適宜調整してみてください。
|