Excel VBA質問箱 IV

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

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


12717 / 13646 ツリー ←次へ | 前へ→

【9037】Optionbuttonについて。 Indian 03/11/15(土) 2:45 質問
【9038】Re:Optionbuttonについて。 INA 03/11/15(土) 8:25 回答
【9039】Re:Optionbuttonについて。 Indian 03/11/15(土) 9:00 発言
【9042】Re:Optionbuttonについて。 INA 03/11/15(土) 10:10 回答
【9043】Re:Optionbuttonについて。 Indian 03/11/15(土) 23:18 お礼
【9044】Re:Optionbuttonについて。 INA 03/11/16(日) 0:04 回答
【9050】Re:Optionbuttonについて。 Indian 03/11/16(日) 2:49 お礼

【9037】Optionbuttonについて。
質問  Indian  - 03/11/15(土) 2:45 -

引用なし
パスワード
   Optionbuttonの操作について2つ質問があります。

Optionbuttonが例えば10個あるとします。
2つずつ同じグループになっています。
それぞれ「はい」、「いいえ」を選びます。
そしてクリックされた後でデータの集計として「はい」が何個、「いいえ」が何個かをセルに代入したいのですが、アドバイスをお待ちしております。

もう一つ、ボタンを設置して、optionbuttonのチェックマークをクリアするためにマクロを作りましたが、変数を使ってより簡潔に作りたいのですがうまくいきません。

Optionbutton変数.value=false

とするとオブジェクトがありませんと出ました。

もしよろしければ回答をいただける事を心よりお待ちしております。

【9038】Re:Optionbuttonについて。
回答  INA  - 03/11/15(土) 8:25 -

引用なし
パスワード
   オプションボタンは3種類ありますが、どれのことでしょうか?

【9039】Re:Optionbuttonについて。
発言  Indian  - 03/11/15(土) 9:00 -

引用なし
パスワード
   ▼INA さん:
>オプションボタンは3種類ありますが、どれのことでしょうか?

3種類もあったのですか?すみません。知らなかったもので。

私が使おうとしているのはコントロールツールボックスの中にある「グループ内のいずれかがオンになると他がオフになる」というものです。

宜しくお願い致します。

【9042】Re:Optionbuttonについて。
回答  INA  - 03/11/15(土) 10:10 -

引用なし
パスワード
   シート上のコントロールツールボックスのOptionbuttonの場合、
以下のようにできます。

Sub sample()
Dim i As Long
Dim cnt As Long
With ActiveSheet
  
For i = 1 To 10
  If .OLEObjects("OptionButton" & i).Object.Value = True Then
    cnt = cnt + 1
  End If
Next i

  Range("A1").Value= cnt

End With
End Sub

クリアするときは、ループを
For i = 1 To 10
  .OLEObjects("OptionButton" & i).Object.Value = False
Next i
です。

【9043】Re:Optionbuttonについて。
お礼  Indian  - 03/11/15(土) 23:18 -

引用なし
パスワード
   ありがとうございます。

このマクロを使ってやってみると、できました。

一つ聞いても宜しいですか?

INAさんはOLEObjectsというのを使っておられましたが、Optionbutton & i.Valueではなぜエラーになるのですか?

Optionbutton1.Valueのように番号を指定するとエラーはでないのに。

返事が遅くなってしまって、大変申し訳ありませんでした。

【9044】Re:Optionbuttonについて。
回答  INA  - 03/11/16(日) 0:04 -

引用なし
パスワード
   >INAさんはOLEObjectsというのを使っておられましたが、
>Optionbutton & i.Valueではなぜエラーになるのですか?
>Optionbutton1.Valueのように番号を指定するとエラーはでないのに。
visual Basic ではコントロール配列というものがあります。
オプションボタンなどのコントロールを配列のように扱えるものです。
Optionbutton(1)
Optionbutton(2)
などと表現して便利なものなのですが、VBAでは使用できません。

シート上のコントロールツールボックスのコントロールは
OLEObjectsというオブジェクトに属する扱いになっております。
& で結合できるのは文字列ですので、
オブジェクト等の基本構文は結合できないのです。
そのため "" で囲まれた文字列の状態に置いて、 & i が使えます。
Optionbutton1 で1つのオブジェクトになっているので、
Optionbutton & 1 では動作しないのです。
これが可能だと
O & p & t & ion & but & ton1 & . & Value のような
むちゃくちゃな記述が出来てしまいます。 
 
まとまりのない説明ですが、OLEObjectsを使うと覚えておいて下さい。
なおユーザーフォーム上で、このような
「コントロール配列もどき」を使うときは、
  For C = 1 To 3
    If Me.Controls("CheckBox" & C).Value = True Then
       cnt = cnt + 1
    End If
  Next C
のように Controls を使うと出来ます。

【9050】Re:Optionbuttonについて。
お礼  Indian  - 03/11/16(日) 2:49 -

引用なし
パスワード
   Optionbutton1で1つのオブジェクトになっているのですね。

てっきり私はWorkSheets(1)のようにIndexの番号がどれにでもついているものだと思い込んでいました。

INAさん、わかりやすく説明して頂いて、本当にありがとうございました。

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