Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2726 / 13645 ツリー ←次へ | 前へ→

【66363】複数のチェックボックス動作 とってぃ 10/8/27(金) 17:11 質問[未読]
【66366】Re:複数のチェックボックス動作 kanabun 10/8/27(金) 18:33 発言[未読]

【66363】複数のチェックボックス動作
質問  とってぃ E-MAIL  - 10/8/27(金) 17:11 -

引用なし
パスワード
   誰か教えてください。初心者でわかりません。。

10個のCheckBoxがある。
14個のLabelがある。
1個のコマンドボタンがある。

各CheckBoxをクリックで下記動作を行っている。
CheckBox10個分

(例:CheckBox2_Click/CheckBox3_Click)

Private Sub CheckBox2_Click()

If CheckBox2.Value = True Then
 Dim i As Integer
  For i = 1 To 14
   Me.Controls("Label" & i).Visible = True
  Next i
 Dim cnt As Long
  cnt1 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "あ")
   Label1 = cnt1
  cnt2 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "い")
   Label2 = cnt2
  cnt3 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "う")
   Label3 = cnt3



  cnt14 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "せ")
   Label14 = cnt14
Else
 Dim ii As Integer
  For ii = 1 To 14
   Me.Controls("Label" & ii).Visible = False
  Next ii
End If
End Sub

Private Sub CheckBox3_Click()

If CheckBox2.Value = True Then
 Dim i As Integer
  For i = 1 To 14
   Me.Controls("Label" & i).Visible = True
  Next i
 Dim cnt As Long
  cnt1 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "ああ")
   Label1 = cnt1
  cnt2 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "いい")
   Label2 = cnt2
  cnt3 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "うう")
   Label3 = cnt3



  cnt14 = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("BS:BS"), "せせ")
   Label14 = cnt14
Else
 Dim ii As Integer
  For ii = 1 To 14
   Me.Controls("Label" & ii).Visible = False
  Next ii
End If
End Sub

コマンドボタンで複数のチェックに対して処理をしたい。
たとえば、CheckBox2とCheckBox3にチェックをつけてコマンドボタンを押すと
CheckBox2とCheckBox3のCountIfの合計を各Labelに表示したい。

文章が下手ですみません。
よろしくお願いします。

【66366】Re:複数のチェックボックス動作
発言  kanabun  - 10/8/27(金) 18:33 -

引用なし
パスワード
   ▼とってぃ さん:
こんにちは〜〜

CheckBox_Click()に処理を記述するのでなく、
CommandButtonに カウント作業を一括描き込めばよいのでは?

CkeckBox別検索ワードも 作業用シートに (グループ別)表を
作っておいて、これを参照して 検索したら効率的かと思います。

【temp】シート
-------------------------------------------------------
    Ck1    Ck2    Ck3
Label1    あ    ああ    あああ
Label2    い    いい    いいい
Label3    う    うう    ううう
Label4    え    ええ    えええ
Label5    お    おお    おおお
Label6    か    かか    かかか
Label7    き    きき    ききき
Label8    く    くく    くくく
Label9    け    けけ    けけけ
Label10    こ    ここ    こここ
Label11    さ    ささ    さささ
Label12    し    しし    ししし
Label13    す    すす    すすす
Label14    せ    せせ    せせせ
-------------------------------------------------------


Private Sub CommandButton1_Click()
 Dim v
 v = Worksheets("temp").Range("B2").Resize(14, 10).Value
 
 Dim r As Range
 ReDim tot(1 To 14) As Long
 Dim j As Long, i As Long
 
 With Worksheets("Sheet1")
   Set r = .Range("BS2", .Range("BS65536").End(xlUp))
 End With
 For j = 1 To 10 'CheckBoxの数
  If Controls("CheckBox" & j).Value Then
    For i = 1 To 14 '検索文字列の種類
      tot(i) = tot(i) + WorksheetFunction.CountIf(r, v(i, j))
    Next
  End If
  For i = 1 To 14
    With Controls("Label" & i)
      If tot(i) > 0 Then
        .Visible = True
        .Caption = tot(i)
      Else
        .Visible = 0
      End If
    End With
  Next
 Next
 
End Sub

2726 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free