Excel VBA質問箱 IV

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

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


13306 / 13644 ツリー ←次へ | 前へ→

【5898】複数のチェックボックスの状況を調べる 萌々花 03/6/7(土) 8:41 質問
【5900】Re:複数のチェックボックスの状況を調べる Hirofumi 03/6/7(土) 10:35 回答
【6055】Re:複数のチェックボックスの状況を調べる 萌々花 03/6/14(土) 6:05 お礼

【5898】複数のチェックボックスの状況を調べる
質問  萌々花  - 03/6/7(土) 8:41 -

引用なし
パスワード
   UserFormに名前の異なる複数のチェックボックスを定義して、各チェックボックスの状況をWorkSheetにUserForm上に表示されている順番にセットしていきたいのですが、以下の方法で行ったのですが、UserFormに表示されている順番にチェックボックスの状況をセットすることが出来ませんでした。
例えば、CheckBox1,CheckBox3,CheckBox2の順に1列に配置したとします(タブオーダーもCheckBox1,CheckBox3,CheckBox2です)。これを、以下の方法で取得すると、
CheckBox1,CheckBox2,CheckBox3の順で取得していくようです。何か、順番を決定する指定があるのでしょうか?


Private Sub コントロール文を使う方法_バラバラの場合()
Dim myCtrl As Control
Dim myCnt As Long

  For Each myCtrl In Controls
    If TypeName(myCtrl) = "CheckBox" Then
    If myCtrl.Value Then myCnt = myCnt + 1
    End If
  Next
  MsgBox myCnt
End Sub

【5900】Re:複数のチェックボックスの状況を調べる
回答  Hirofumi E-MAIL  - 03/6/7(土) 10:35 -

引用なし
パスワード
   基本的に、For Each In は、コレクションを全て読み出すだけで
順番的に、何が呼び出されるか解りません
因って、配列等に明示的に順番を指定して呼び出した方が善いかも?

Private Sub CommandButton1_Click()

  Dim i As Long
  Dim vntNumb As Variant
  Dim myCnt As Long
  
  vntNumb = Array(1, 3, 2)
  For i = 0 To UBound(vntNumb)
    If Me.Controls("CheckBox" & vntNumb(i)).Value Then
      myCnt = myCnt + 1
    End If
  Next i
  MsgBox myCnt
    
End Sub

【6055】Re:複数のチェックボックスの状況を調べる
お礼  萌々花  - 03/6/14(土) 6:05 -

引用なし
パスワード
   ありがとうございます。
例えばタブインデックスの順番に読み込んでくれたりすると
私としては大変に便利だったのですが残念です。
また何か合ったらお願いします。

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