【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?

入力されたかどうか、オプションボタンが選択されたかどうかをチェックして、OKなら次の入力にすすむとゆうプログラムを作りたいのですが、今回の場合、optAとoptBとoptCとがあり選択されたらcmbAとcmbBの入力(選択)を許可するとゆうプログラムを作りたいのです。簡単に
If optA.Value = False And optB.Value = False And・・・
とゆうやり方はあると思うのですが、数が増えたときのためにもっと効率よくしたいのです。ネットには、

ユーザフォーム上に配置された各コントロールの入力チェックを行う段階でオプションボタンの値を効率的にチェックするには、フレームコントロール配下のControlsプロパティーから取得されるコレクションから各オプションボタンを取得し、Valueプロパティーを評価します。

'====================================================================
(For Each ループのネストによる手法)
※他のコントロールの評価も同時に行うことを想定しています
'フレーム数とTrueであったオプションボタンの個数とを比較
'OKが表示されない場合は未選択のオプショングループあり。
'=====================================================================
また、フレームの数分だけのループを指定して入力チェックを行う場合は・・・
======================================================================
(Controlsコレクションのインデックスからフレーム内のコントロールにアクセスする手法)

と書いてあったのですが、初心者なものでよくわかりませんでした。この方法を詳しく解説もしくわ、他によい方法があればよろしくお願いします。

A 回答 (1件)

起動時に(最初)オプションボタンは全て未選択状態に初期化されているとしています。


下は例ですが、For Each で TypeName を使いオプションボタンを特定すれば、何個あってもいいはずです。
調べるきっかけはコマンドボタンにしてみました。ご参考に。


Private Sub Command1_Click()
  Dim myCtrl As Control 'コントロール
  Dim ChkFlg As Boolean 'オプションボタンを押してあるか

  'オプションボタンを調べる
  For Each myCtrl In Controls
    If TypeName(myCtrl) = "OptionButton" Then
      If myCtrl.Value Then
        ChkFlg = True
      End If
    End If
  Next

  '調べた結果
  If ChkFlg Then
    cmbA.Enabled = True
    cmbB.Enabled = True
  End If
End Sub
    • good
    • 0
この回答へのお礼

先日の方ですね。またまた有難うございます。とてもわかりやすそうなので、これから解析して参考にしてみます。有難うございました。

お礼日時:2002/06/26 12:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報