シート上のオプションボタン、チェックボックスの配列化と複数選択方法について

このQ&Aのポイント
  • Excel2003のシート上に配置されたオプションボタンやチェックボックスを配列化する方法がありますか?配列化することで処理が簡単になります。
  • シート上に直接配置されたオプションボタンは一つしか選択できませんが、複数選択する方法はありますか?グループ化などの方法はないでしょうか。
  • Excel2003のシート上でオプションボタンやチェックボックスを配列化し、複数選択する方法について教えてください。
回答を見る
  • ベストアンサー

シート上のオプションボタン、チェックボックスを配列にする。

シート上のオプションボタン、チェックボックスを配列にする。 Excel2003です。 シート上にオプションボタン、チェックボックスを増やすと、OptionButtonN、CheckBoxN (大文字Nは任意の数値)となります。これをOptionButton(N)のように配列にできないでしょうか? プログラムで扱う場合、配列でしたら処理が楽になると思うからです。 また、同じくシート上にオプションボタンを配置するとどれか1つしか選択できません。(ひとつしかValueをTrueにできません。) UserFormのようにFrameがあればその中で1つを選択できるのですが、シート上に直接配置する場合、Frameが扱えないように思います。グループ化して複数選択する方法はないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> OptionButton(N)のように配列にできないでしょうか 出来ません。 一つ発想を替えてLinkedCellを使ったらどうでしょうか。 OptionButton1をA1 OptionButton2をA2 OptionButtonNをAN (大文字Nは任意の数値) に設定し、A1,A2,A(N)を参照します。 A1をTrue にするとOptionButton1はONに 逆に OptionButton1をOFFにするとA1はFalseになります。 > グループ化して複数選択する方法 GroupNameを適当にグループ毎に名前を付けてやれば出来ます。

Hirorin_20
質問者

お礼

ありがとうございました。 GroupNameわかりました。

Hirorin_20
質問者

補足

ありがとうございました。 LinkedCellも理解できました。

その他の回答 (1)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

> 配列にできないでしょうか? 配列の型は自由に宣言できますので、該当のエクセルオブジェクトの 配列を宣言してください。その後、配列のそれぞれの要素に、該当する コントロールを入れていってください。 > グループ化して複数選択 グループボックスを使えば良いのでは?

Hirorin_20
質問者

お礼

ありがとうございました。 GroupNameわかりました。

関連するQ&A

  • オプションボタンとリストボックスの連動

    下記コードを作りましたが、全く反応がありません。 どこが悪いのか、指摘いただけませんでしょうか? よろしくお願いします。 ・オプションボタン1を選択=リストシートのB列をリストボックスへ表示 ・オプションボタン2を選択=リストシートのC列をリストボックスへ表示 ・リストボックスから一項目を選択、値を入力シートへ入力 Private Sub UserForm2_Initialize() If OptionButton1.Value = True Then With UserForm2 .ListBox1.RowSource = "リスト!B3:B" & lastRow End With End If If OptionButton2.Value = True Then With UserForm2 .ListBox1.RowSource = "リスト!C3:C" & lastRow End With End If End Sub Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _ ByVal X As Single, ByVal Y As Single) Worksheets("入力!").ActiveCell.Value = ListBox1.Value End Sub 以上

  • フレーム内のオプションボタン状態取得方法について

    excel2010 フレーム内のオプションボタン状態の取得方法について教えてください。 従来、オプションボタンの状態はLinkedCellにセルアドレスを設定(H2と設定)すれば、 下記の様に設定すれば、チェックが入っているかどうかを確認できました。 If Range("H2") = True Then …(1) 今回、オプションボタンを大きく設定したかったので、 excel2010の 開発→挿入→コントロールの選択で Microsoft Forms 2.0 Frame を選択し、フレームを作成。 フレームオブジェクト→編集でZOOMを200に設定。 ツールボックスからオプションボタンを選択し配置。 これで通常の2倍の大きさのオプションボタンを配置できました(OpitonButton1)。 このオプションボタンのプロパティを見ると、LinkedCellという項目がありません。 このフレーム内に設定したオプションボタン(OptionButton1)が選択されているかどうかを 確認する方法を知りたいのです。 ホームページで調べたのですが、(1)の部分がどういう書式に代わるかを教えていただきたく。 尚、オプションボタンはフレーム内に2ケ(OptionButton1,OptionButton2)配置しています。

  • 【エクセル】オプションボタンにセルの値を反映させるには

    エクセルマクロ初心者です。教えてください。 シート2 の あるセルの値が A のとき シート1上の オプションボタン1がtrueになる。 シート2 の あるセルの値が A以外のとき シート1上の オプションボタン1がfalseになる。 (オプションボタン1はフォームコントロールのオプションボタンです。) という結果になるマクロの登録方法を模索していますがうまくいきません。 実際には、シート1は入力シートで、ボタンクリックで別の蓄積シートに転記(オプションボタンのほかコンボボックスなどの内容を転記します)。シート1上のリストボックスに蓄積シートの内容を表示し、選択するとその内容を呼び出すようにしたいのです。 コンボボックスやテキストボックスに呼び出すところまではなんとか本を見たりしてできたのですが、オプションボタンに呼び出せません。 なんとかお知恵をお借りしたいです。 よろしくおねがいします。 *下記のようにやってみました。 Private Sub commandbutton3_click() Dim n As Integer n = ListBox1.ListIndex If n = -1 Then MsgBox "選択してください" Else ComboBox2.Value = ListBox1.List(n, 0) ComboBox3.Value = ListBox1.List(n, 3) ComboBox4.Value = ListBox1.List(n, 4) ComboBox5.Value = ListBox1.List(n, 8) ComboBox6.Value = ListBox1.List(n, 9) ComboBox7.Value = ListBox1.List(n, 1) ComboBox8.Value = ListBox1.List(n, 2) TextBox3.Value = ListBox1.List(n, 10) End if ***********ここからがうまくいきません******** If Worksheets("入力シート").ListBox1.List(n, 6).Value = "A" Then OptionButton1.Value = True Else OptionButton("A").Value = False End If End Sub

  • Excel VBA オプションボタンについて

    こんばんは オプションボタンが5つあり、 登録ボタンが1つあるユーザーフォームを作りました。 このオプションにチェックを入れずに登録ボタンを押したときに 「必ず選択してください。」とメッセージを表示し、再度入力させるようにしたいのですが、どうしたらよいのでしょうか。 Excelのバージョンは2003です。 調べたところ (1)で動きそうだ。ということが判ったのですがチェックを入れ値がtrueになるとエラーが発生して止まってしまいます。(理由がわかりません) Private Sub commandbutton2_click() Dim opt As ControlFormat, flg As Boolean flg = False For Each opt In frame1.Controls If opt.Value = True Then '←ここの行でtrueだった場合のエラーが発生してしまう。 flg = True Selection.Value = opt.Caption End If Next Unload userform1 End Sub (2)この方法で何とか動いたのですが、初めの方に書いたとおり、オプションボタンが選択されずに登録ボタンが押された場合、チェックするように促すメッセージを表示する方法がわかりません。また、できればユーザーホームの×ボタンを押せなくする方法もしくは、閉じられた場合にマクロを抜けるようにするにはどうしたらよいのでしょうか。宜しくお願い致します。 Private Sub commandbutton1_click() Dim i As Integer For i = 1 To 5 If Me.Controls("optionbutton" & i).Value = True Then Selection.Value = Me.Controls("optionbutton" & i).Caption End If Next i Unload userform1 End Sub

  • タブストリップの中のオプションボタン

    お世話になります。 Excel2007を使用しており、VBAでの質問です。 ユーザーフォームに、タブストリップを作成し、クイズを作っています。その中に選択肢として、フレームの中にオプションボタンを3つ配置しました。 オプションボタンを押すと、ワークシート"緑"のI列のセルに反映させるようにしています。 Private Sub OptionButton1_Click() Worksheets("緑").Select Select Case TabStrip1.Value Case 0  Range("I3").Value = "A" Case 1  Range("I4").Value = "A" Case 2  Range("I5").Value = "A" Case 3      Range("I6").Value = "A" End Select End Sub これをOptionButton2なら、"B"。OptionButton3なら"C"にします。 しかし、今の状態では、OptionButton1を押し、タブを替えると、すべてOptionButton1が選択されているように見えてしまいます。実際には、セルに反映しているので、後の答え合わせなどは大丈夫なのですが、ユーザーフォームから見直ししたい場合にみると、わかりにくいのではないかと思います。なので、オプションボタンは ・タブを替えても、自分が選択したものにチェックがはいっている。 ・まだ、回答をクリックしてないものには、チェックが入っていない。 つまりタブごとに、違う選択を表示させたいのです。それとも、マルチページで作成したほうがいいのでしょうか? 説明が下手ですみません。どうぞよろしくお願いします。

  • 入力されたかどうか、オプションボタンが選択されたかどうかをチェックしたい

    入力されたかどうか、オプションボタンが選択されたかどうかをチェックして、OKなら次の入力にすすむとゆうプログラムを作りたいのですが、今回の場合、optAとoptBとoptCとがあり選択されたらcmbAとcmbBの入力(選択)を許可するとゆうプログラムを作りたいのです。簡単に If optA.Value = False And optB.Value = False And・・・ とゆうやり方はあると思うのですが、数が増えたときのためにもっと効率よくしたいのです。ネットには、 ユーザフォーム上に配置された各コントロールの入力チェックを行う段階でオプションボタンの値を効率的にチェックするには、フレームコントロール配下のControlsプロパティーから取得されるコレクションから各オプションボタンを取得し、Valueプロパティーを評価します。 '==================================================================== (For Each ループのネストによる手法) ※他のコントロールの評価も同時に行うことを想定しています 'フレーム数とTrueであったオプションボタンの個数とを比較 'OKが表示されない場合は未選択のオプショングループあり。 '===================================================================== また、フレームの数分だけのループを指定して入力チェックを行う場合は・・・ ====================================================================== (Controlsコレクションのインデックスからフレーム内のコントロールにアクセスする手法) と書いてあったのですが、初心者なものでよくわかりませんでした。この方法を詳しく解説もしくわ、他によい方法があればよろしくお願いします。

  • Excelのシートにオプションボタン設置したい

    Excel2000を使ってます。ワークシートに直接、いくつかのオプションボタンをフレームの上でグループ化して置きたいと思っています。 メニューの「コントロールツールボックス」にボタン「コントロールの選択」があって、そこに「Microsoft Forms 2.0 Frame」というのがありましたので、それを使ってみたところ、右クリックで「フレームオブジェクトの編集」から、フレーム上にオプションボタンを設置することができましたが、そのボタンに「コードの表示」ができないので、これ以上、前に進めません。 ウエッブ検索等で調べてみましたが、説明してるサイトを見つけることができません。UserFormのように、オプションボタンにコードを記入したいのですが、どのようにすればいいのかご存知の方、いらっしゃいませんでしょうか。

  • VBAでオプションボタン変更によって・・・

    エクセルVBAのユーザーフォーム内にあるコンボボックス3つを選択することによりデータ入力を行っています。 この度選択肢を増やすことになり、オプションボタンを2つ追加しようと思っています。 オプションボタンはどちらかを決定することで、コンボボックスの選択内容を変更する予定です。 コンボボックスは大中小分類としており、シート2から抽出したものをシート1に落としている現状をオプションボタン新設により、ボタン1は従来通りシート2から、ボタン2選択時はシート3にあるリストからコンボボックスへ繁栄させようとしたいのですが、方法が分かりません。 どなたか、教えていただけると助かります。 よろしくお願いします。 現在のコードを下記に記します。 Private Sub UserForm_Activate() With UserForm3 .OptionButton1 = True *この段階でボタン2を選択時は、シート3にあるリストよりコンボボックスの内容を抽出したい。 以下中小分類も同様としたい。 .ComboBox1.RowSource = "シート2!A3:A15" .ComboBox1.SetFocus End With End Sub Private Sub ComboBox1_Change() Dim myLlist As String myLlist = ComboBox1 With UserForm3 .ComboBox2.Text = "" .ComboBox3.Text = "" Select Case myLlist Case "大1" .ComboBox2.RowSource = "シート2!B21:B26" Case "大2" .ComboBox2.RowSource = "シート2!B27:B28" End Select End With End Sub Private Sub ComboBox2_Change() Dim myMlist As String myMlist = ComboBox2 With UserForm3 .ComboBox3.Text = "" Select Case myMlist Case "中1" .ComboBox3.RowSource = "シート2!C101:C111" Case "中2" .ComboBox3.RowSource = "シート2!C121:C124" End Select End With End Sub Private Sub OKボタン_Click() With UserForm3 ActiveSheet.Unprotect 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm3.ComboBox1.Value Cells(行, 列 + 1) = UserForm3.ComboBox2.Value Cells(行, 列 + 2) = UserForm3.ComboBox3.Value ActiveSheet.Protect End With End Sub

  • Excel2007 VBA シート上のオプションボタン

    Excel2007のVBAで質問があります。 シート上に複数(90個)のオプションボタンが設置しているシートが有りコマンドボタンが押されたときに どのオプションボタンが選択されているか判断したいのですが、 IF文で一つ一つ下記のように書くと個数が多いたムダに長いロジックになります。 If Worksheets("Sheet1").OptionButton1.Value Then chk_f = 1 end If If Worksheets("Sheet1").OptionButton2.Value Then chk_f = 2 end If         :         : ユーザーフォームに設置しているオプションボタンは、下記のようにFor文で回せるのは判っているのですが、 For i = 1 To 90 If Me.Controls("OptionButton" & i).Value Then chk_f = i exit for End If Next シート上のオプションボタンでも同様の事は可能でしょうか? もしなければオプションボタンとセルをリンクさせてそのセルをFor文で回して確認していく方法が出来るかなと考えています。

  • オプションボタン選択でコンボボックス有効

    ExcelVBAでユーザーフォームを作成しているのですが、昨日までうまく動作していたことが、突然動かなくなりました。 オプション1を選択 ↓ コンボボックス1有効  ※他のコンボボックスは無効 ↓ オプション2を選択 ↓ コンボボックス2有効  ※コンボボックス1も含め他のコンボボックスは無効 という感じで動作させたいです。 書いたコードはこんな感じです。 Private Sub OptionButton1_Click () Dim i As Long Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row If OptionButton1.Value = True Then OptionButton1.Enabled = True With ComboBox1 If ComboBox1 = "" Then For i = 2 To lastRow .AddItem Worksheets("sheet1").Cells(i, 1).Value Next i End If End With ComboBox1.ListIndex = 0 ComboBox2.Enabled = False ComboBox3.Enabled = False End If End Sub コードの間違いや改善点などありましたら教えて下さい。 よろしくお願いします。

専門家に質問してみよう