Excel VBA質問箱 IV

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

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


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

【57215】フォーム内ラジオボタンのチェックがされているか否かをGroup単位で調べたい 左之 08/8/1(金) 12:26 質問[未読]
【57216】Re:フォーム内ラジオボタンのチェックがさ... kanabun 08/8/1(金) 12:59 発言[未読]
【57218】Re:フォーム内ラジオボタンのチェックがさ... 左之 08/8/1(金) 15:45 お礼[未読]
【57217】Re:フォーム内ラジオボタンのチェックがさ... mizunu 08/8/1(金) 15:06 回答[未読]
【57219】Re:フォーム内ラジオボタンのチェックがさ... 左之 08/8/1(金) 15:50 お礼[未読]

【57215】フォーム内ラジオボタンのチェックがされ...
質問  左之  - 08/8/1(金) 12:26 -

引用なし
パスワード
    いつも皆様のご意見を参考にしております。
投稿するのは初めてです。
よろしくお願いいたします。


【質問】
フォーム内ラジオボタンのチェックがされているか否かをGroup単位で調べたい

【内容】
現在、Wizard形式のファイルを作成しています。

その一つのフォームには、6つのラジオボタンが存在しています。
それぞれ3つずつ、グループとしてまとめております。(2グループ存在)
ユーザーに それぞれのグループより、一つずつラジオボタンを
選択して頂く必要があります。
選んでいなければ 次の画面へ進む際、エラーを表示する必要があります。

このエラー表示をするか否かを判定するVBAが分かりません。

if (ラジオボタンA.value=false) and ...
と各ラジオボタン毎に書いても良いのですが、
今後ラジオボタンは増える可能性があるので、
面倒ですし、見栄えもよくありません。
※ただし、グループ数が増える予定はありません

グループ単位でまとめてチェックできませんでしょうか?
ご教授よろしくお願いいたします。


【例】
欲しいお酒の種類(全て地酒)を選択してください
   ○日本酒      ( ⇒ラジオボタンA(グループ名:Kind))
   ○米焼酎      ( ⇒  〃   B(  〃  : 〃 ))
   ○麦焼酎      ( ⇒  〃   C(  〃  : 〃 ))

どこの地域のものが良いですか?
   ○青森       ( ⇒ラジオボタンD(グループ名:Area))
   ○秋田       ( ⇒  〃   E(  〃  : 〃 ))
   ○新潟       ( ⇒  〃   F(  〃  : 〃 ))

            [次へ]ボタン

【57216】Re:フォーム内ラジオボタンのチェックが...
発言  kanabun  - 08/8/1(金) 12:59 -

引用なし
パスワード
   ▼左之 さん:
こんにちは。

>【質問】
>フォーム内ラジオボタンのチェックがされているか否かをGroup単位で調べたい
>
ラジオボタン ってなんですか(^^ 
オプションボタンのことですか?
オプションボタンですと、
> if (ラジオボタンA.value=false) and ...
> と各ラジオボタン毎に書いても良いのですが
のように、チェックがめんどうです。

いっそ、考え方を変えて、グループごとに ひとつのコンボボックスで代用でき
ないですか?
これなら、選択されているかは ComboBox1.ListIndex > 0
で、判りますから。

'-----------------UserForm2
Option Explicit

Private Sub UserForm_Initialize()
  With ComboBox1
    .AddItem "欲しいお酒の種類(全て地酒)を選択してください"
    .AddItem "日本酒"
    .AddItem "米焼酎"
    .AddItem "麦焼酎"
    .ListIndex = 0
  End With

  With ComboBox2
    .AddItem "どこの地域のものが良いですか?"
    .AddItem "青森"
    .AddItem "秋田"
    .AddItem "新潟"
    .AddItem "熊本"
    .AddItem "大分"
    .AddItem "宮崎"
    .AddItem "鹿児島"
    .ListIndex = 0
  End With
End Sub

【57217】Re:フォーム内ラジオボタンのチェックが...
回答  mizunu  - 08/8/1(金) 15:06 -

引用なし
パスワード
   >フォーム内ラジオボタンのチェックがされているか否かをGroup単位で調べたい

ユーザーフォーム内のオプションボタンだとして...
エクセルでは単にフォームと言うと [表示]-[ツールバー]-[フォーム]
あるいは、[データ]-[フォーム] をさすと思います。

>グループ単位でまとめてチェックできませんでしょうか?

グループ単位でチェックされたオプションボタンを取得する以下のような
関数を用いられては如何でしょう。

Private Function OptionButton(group As String) As MSForms.OptionButton
 Dim ctl As MSForms.Control
 For Each ctl In Controls
  If TypeOf ctl Is MSForms.OptionButton Then
   If ctl.GroupName = group And ctl.Value Then
    Set OptionButton = ctl
    Exit Function
   End If
  End If
 Next
End Function

Private Sub CommandButton1_Click()
 If OptionButton("Kind") Is Nothing Then 'チェックされていない
  '''
 End If
End Sub

【57218】Re:フォーム内ラジオボタンのチェックが...
お礼  左之  - 08/8/1(金) 15:45 -

引用なし
パスワード
   kanabunさん、ご回答ありがとうございます。

>ラジオボタン ってなんですか(^^ 
>オプションボタンのことですか?

すみません、その通りです;


>いっそ、考え方を変えて、グループごとに ひとつのコンボボックスで代用でき
>ないですか?
>これなら、選択されているかは ComboBox1.ListIndex > 0
>で、判りますから。

確かに分かりやすいです。
ただ、今回の件はオプションボタンを使用したいと思います。

しかしながら他のページで表現に困っていた部分に当てられそうです!
そちらのページにてkanabunさんのご意見を参考にさせて頂きます。
助かりました、有り難う御座いました!

【57219】Re:フォーム内ラジオボタンのチェックが...
お礼  左之  - 08/8/1(金) 15:50 -

引用なし
パスワード
   mizunu さん、ご回答有り難う御座います!

>エクセルでは単にフォームと言うと [表示]-[ツールバー]-[フォーム]
>あるいは、[データ]-[フォーム] をさすと思います。

すみません、知りませんでした;
今後気をつけます。


>グループ単位でチェックされたオプションボタンを取得する以下のような
>関数を用いられては如何でしょう。

有り難う御座います!
試したところ、上手く動作しました。
(最初は仕様されているコマンドが分かりませんでしたが、調べることが出来ました。)
これで先に進めることができます。


本当に有り難う御座いました!

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