• ベストアンサー

OptionButton(フォームとOLEObjects)

エクセル2000です。 1.ワークシートのセル上にオプションボタンを何組か配置する場合、フォームのオプションボタンなら、1つのセルにまず一個を貼り付け、あとはそのセルをドラッグすれば、簡単にたくさん貼り付けることが出来ます。 ところが、「フォーム」ではなく、OLEObjectsというものなのでしょうか、コントロールツールボックスから貼り付けるオプションボタンの場合、貼り付けてドラッグしてもそうはならないようです。 これは、一個一個地道に貼り付けしないといけないのでしょうか? 2.フォームのオプションボタンなら「コントロールの書式設定」でリンクするセルをマウス操作で簡単に指定できますが、OLEObjectsのオプションボタンはプロパティのLincedCellに直接セル番地を入力しないといけないようです。他にもっと簡単にリンクするセルを指定することは出来ないのでしょうか? フォームになれているせいか、OLEObjectsのオプションボタン等は、使い方が良くわかりません。ただ、OLEObjectsのオプションボタンなら一々グループボックスで囲まなくともいいようなので使ってみたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 最初に、フォームボタンは、コントロール配列になって、そこで、インデックスが排出するのですね。どうも、構造的に、コントロールツールとは違うようですね。コントロールツール側は、インデックスは、排出しないようです。(マクロでは出来ますが) >グループを設定しておけば、グループ内でTrueに出来るのは一個だけという理解でよろしいですか? >同じシートのA1~A20にし、1と2、3と4という具合に、2個ずつグループとする場合、どのようなマクロの記述になるのでしょうか? マクロをみてください。Excel2000 とExcel2003とで試してみましたが、若干、OptionButton の反応が違うようです。 Sub AddControl() Dim i As Integer Dim j As Integer   Application.ScreenUpdating = False   For i = 1 To 10     For j = 1 To 2       With ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1")         .Left = Cells(i, j).Left + 5 '中央にずらす         .Top = Cells(i, j).Top + 3 '中央にずらす         .Height = 13         .Width = 13         'キャプションは、消しておく         .Object.Caption = ""         'グループ名を与える         .Object.GroupName = "Group" & i         'リンク先セルの位置         .LinkedCell = Cells(i, j + 4).Address         .Visible = True         '明示的に、On/Off を与える         If (j Mod 2) = 1 Then           .Object.Value = True         Else           .Object.Value = False         End If       End With     Next j   Next i   Application.ScreenUpdating = True End Sub 'おまけ:オプションボタンの削除ツール Sub DeleteOptionButtons() Dim o As Object  For Each o In ThisWorkbook.ActiveSheet.OLEObjects  If TypeOf o.Object Is MSForms.OptionButton Then   o.Delete  End If  Next End Sub

merlionXX
質問者

お礼

ありがとうございました。 もう一点だけよろしいでしょうか? 透過させようと思い、コードの中に.Object.BackStyle = 0 を入れてみましたが、透過されず、白く残ってしまいます。 プロパティウィンドウで見てもBackStyleは0-fmBackStyleTransparentになっているのですが・・・。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。Wendy02です。 >プロパティウィンドウで見てもBackStyleは0-fmBackStyleTransparentになっているのですが・・・。 これは、他のプロパティもいじってみましたが、何か、コントロールツール自体が別のものに変わるようです。透明化は出来ませんでしたね。 #4 onlyromさん曰く >先々のことを考慮すると柔軟性のあるコントロールツールボックスのコントロールを使うほうがベターな気もします。 その「先々」というのは、同感です。私にとって、その「先」があるのかは、本当に未定ですが。フォームツールは、Ver.5 の産物で、ダイアログシートとセットで使えるようになっていますから、表示的には優れているのですが、表現力は落ちます。 コントロールツールは、主にシートオブジェクトに対して設けられることです。その点で、複数のシートに同じようなものが出来ると、なぜか、トラブルを起こすことがあります。それに対して、フォームの属性は、Application側にありますから、意外に軽いし、複数が別々の場所にあっても、トラブルを起こす心配が少ないです。 同じものが二つあるというのは、ややこしいですが、一般ユーザーが使えるようにするには、コントロールツールのプロパティの日本語化が望まれますね。

merlionXX
質問者

お礼

有難うございました。 コントロールツールボックスのコントロールは使い慣れてないのでわからないことばかりです。どう柔軟性があるのか、表現力って具体的になんなのか(色をつけられることはわかりましたが)まだぜんぜんわかっていません。 後日、また質問すると思いますのでその節はまたよろしくご指導くださいませ。 有難うございました。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

こんにちは。 >1.フォームのオプションボタンなら、1つのセルにまず一個を貼り付け、あとはそのセルをドラッグすれば、簡単にたくさん貼り付けることが出来ます。 >ところが、「フォーム」ではなく、OLEObjectsというものなのでしょうか、コントロールツールボックスから貼り付けるオプションボタンの場合、貼り付けてドラッグしてもそうはならないようです。 フォームのコントロールもコントロールツールボックスのコントロールもそれを貼り付けたセルのフィルハンドルをドラッグすれば、セルと共にコピーできますが、それには条件があります。 (条件)はどちらのコントロールも同じですが。。。  コントロール上で右クリック > コントロールの書式設定  書式設定ダイアログの「プロパティ」をクリック  表示される画面の「オブジェクトの位置関係」で 「セルに合わせて移動やサイズを変更しない」がチェックされてると、セルのドラッグによるコピーは【できません】 それ以外の項目にチェックがされてると、コピー【できます】 質問された時点でコピーできなかったのは恐らく上記が絡んでいたものと思われます。 何はともあれお試しください。 それから、先々のことを考慮すると柔軟性のあるコントロールツールボックスのコントロールを使うほうがベターな気もします。  

merlionXX
質問者

お礼

>「セルに合わせて移動やサイズを変更しない」がチェックされてると、セルのドラッグによるコピーは【できません】 > それ以外の項目にチェックがされてると、コピー【できます】 お礼がおそくなり申し訳ございません。 有難うございました。 とても勉強になりました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >コントロールツールボックスから貼り付けるオプションボタンの場合、貼り付けてドラッグしてもそうはならないようです。 こちらは、Excel2000で試してみましたが、コントロールツールも、フォームツールも、同じで、コントロールを押しながら、ドラッグすれば、コピーは出来ます。 >OLEObjectsのオプションボタンはプロパティのLincedCellに直接セル番地を入力しないといけないようです。 私には、フォームツールも、コントロールツールもあまり違いは感じられませんが、大量に入れる場合は、マクロを使います。 >OLEObjectsのオプションボタンなら一々グループボックスで囲まなくともいいようなので使ってみたいのです。 プロパティのGroup Name の部分で、グループ名を分けてあげればよいです。フォームツールよりは、誤動作が少ないと思います。 なお、私が、コントロールツール側を好むのは、表現力の豊かさです。イベントもいろいろ持っているし、そのイベントを、クラスによって加工することが可能だからです。

merlionXX
質問者

お礼

Wendy02さま、いつもありがとうございます。 1.は、わたしの操作が変だったのか、前回は出来なかったのが今回はドラッグで出来ました。有難うございます。 2.大量にある場合、やはりマクロなんですね。 フォームのオプションボタンならグループのどちらかにリンク先を設定すれば、リンク先のセルは押されたボタンにより、1か2が表示されますが、OLEの場合は、そうではなくすべてのボタンにLinkedCellを指定し、ボタンを押すとLinkedCellがTrueになるし、グループを設定しておけば、グループ内でTrueに出来るのは一個だけという理解でよろしいですか? そうであれば、例えば、OptionButton1~OptionButton20まである場合、それぞれリンク先を同じシートのA1~A20にし、1と2、3と4という具合に、2個ずつグループとする場合、どのようなマクロの記述になるのでしょうか? (やってみましたが、マクロの記録では記録されませんでした。) ご教示いただけると幸いです。

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.1

こんばんわ 1.オプションボタンコントロールが正しいお名前だったと思います。 セルサイズぴったりにボタンを作るのでしたら、矢印キーでボタンの下にカーソルを潜り込ませてコピーして貼り付け先をズラーーーーと選択して張り付ければ同じです。 2.ないのでは 普通はVBAと組み合わせて使用するのかなと思います。 下記の○○○○○○の部分にコードを入れます。 Private Sub OptionButton1_Click() ○○○○○○ End Sub それ以外の使い方としては、 LOOKED CELLにTRUE・FALSEを表示させて、TRUE・FALSEで別セルに関数の結果を導くこともできます。

merlionXX
質問者

お礼

1.出来ました!ありがとうございます。 2.そうですか、ありませんか。 有難うございました。

関連するQ&A

  • フォームのリンクするセルの指定

    WinXP Pro、Excel2002です。 フォームバーのオプションボタンを設定し、  コントロールの書式設定  コントロールタブ にある  リンクするセル にセルの番地を指定しますが、上記のオプションボタンを複数個コピーすると、すべて同じ番地のセルにリンクします。 しかし、オプションボタンを、セルを選択して下向きへオートフィルしたとき、リンクするセルも自動で A1 A2 A3 A4 … とできないでしょうか?

  • ユーザーフォーム上のコンボボックスのリンク先はどうやって指定?

    エクセル97です。ユーザーフォームにおいたコンボボックスに表示させたいワークシート上のリスト、およびコンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。オプションボタンやチェックボックスのリンク先指定方法もわかりません。またユーザーフォームには「OK」「キャンセル」ボタンもないのでしょうか? エクセル95のときはダイアローグシートにコンボボックスを置き、コントロールの書式設定で簡単に指定が出来たのですが、97に変えてからは、敢えてエクセル5.0のダイアローグを挿入しないといけないようなので、出来ればユーザーフォームで作ってみたいのです。どうかよろしくお願いします。

  • フォームコントロールオプションボタンの異常

    EXCEL 2010を使用しています。 フォームコントロールオプションボタンをB列の1から10行まで10個縦に並べて、使用しています。 リンクするセルはすべてセルA1を指定してあるので、上から順に押していくと、A1に数字が1から10まで表示される状態です。 そして、この10個のオプションボタンはグループボックスで囲ってあります。 通常はこの状態で問題なく使えていて、黒丸が入っているのは1個のみなのですが、突然、10個のうち、ある一か所が黒丸が付きっぱなしになってしまいます。 黒丸が付きっぱなしのオプションボタンが本来表示していた数字はA1に表示されなくなってしまいます。 黒丸が付いたままのボタンはグループボックスを削除すると直ります。 この現象は頻度は低いのですが、たまにおこります。 このような現象が起こる原因がお分かりでしたら教えてください。

  • VS2008-Proでラベルコントロールの絶対位置にしたい。

    VS2008-Proでラベルコントロールの絶対位置にしたい。 初心者です。Web勉強中です。 <オプション> ダイアログの左側 [HTML デザイナ]-[CSS 配置] が開いてる状態になりますので、右側の配置オプションで [ツールボックス、貼り付け、またはドラッグ・・・] にチェックを入れてますが、ラベルコントロールが自由な名位置(「絶対配置」)になりません。 ボタンやテキストコントロールはできるのですが。 どうすれば、なるのでしょうか。教えていただけませんか?

  • エクセルVBAでOptionButtonのオンオフ取得

    ワークシート上に貼り付けてあるオプションボタンの状態の取得ですが、フォームのオプションボタンなら 例えば、 MsgBox ActiveSheet.OptionButtons("Option Button 44").Value で、オンなら1、オフなら-4146が返ります。 またActiveSheet.OptionButtons("Option Button 44").Value=xlOnで オンに出来ます。 ところがフォームじゃないコントロールツールボックスのオプションボタンは MsgBox ActiveSheet.Shapes("OptionButton30").Valueでも MsgBox ActiveSheet.Controls("OptionButton30").Valueでもエラーになります。 どうやって取得すればいいのでしょうか? どうやてOn Off を指示すればいいのでしょうか?

  • vbaで、フォームコントロールを挿入する方法

    vbaで、フォームコントロールを挿入する方法 エクセル2007を使っています。 最近、vbaを始めたのですがわからない事があります。 開発→挿入→挿入→フォームコントロールで、 オプションボタンやチェックボックスを、 vbaで挿入したいのですが可能でしょうか? 例えば、フォームコントロールのボタンを押しただけで オプションボタンを6つ挿入するなどです。 ActiveXコントロールでは、可能とどこかのサイトで見たのですが、 どうしてもフォームコントロールの方を使いたいの…。 よろしくお願いします。

  • エクセル マクロ フォームのチェックボックス

    エクセルのフォームのチェックボックスで【On】にした際に 「コントロールの書式設定」にある「リンクするセル」のロックをしたいのですが マクロで実現する際、どのようなにできるのでしょうか? また、フォームのチェックボックスで【Off】にした際に、「リンクするセル」のロックの解除のしたいです。 初心者で下記を記述しましたが、チェックボックスが多いため、すべてのチェックボックスに登録するのが時間がかかるのあで、教授お願いします。 Cells.Locked = False ActiveSheet.Protect userinterfaceonly:=True ActiveSheet.Range("AY29").Locked = True

  • エクセル フォーム スクロールロールバー 最大値

    エクセル2002を使用しています。 フォームのスクロールロールバーの「リンクするセル」を使用して数値を操作しようとしています。 操作する数字は、0~10000000になるのですが、 「コントロールの書式設定」の「コントロール」タブにて、最大値が30000までしか指定できません。 最大値を解除する方法、またはマクロなどあるのでしょうか? 教えてください。

  • ACCESS フォーム作成について

    甲テーブルには三つのフィールドがABCが存在し、そのうちのCにはデータシート表示で、種別を表す1、2のオプション値が入ったものになります)。 この甲テーブルを元にフォーム作りたいのですが、Cフィールドをいわゆるオプションボタンのように表記させてフォーム入力時にどちらかのボタンに●を入れて使いやすくしたいものの、フォームウィザードで進めていく中でどこでオプションボタン編集可能になるのかわかりません。ちなみにフォーム名を指定する際に編集するか否か聞いてくるのですが、編集を選んでも、上記Cのフィールドは自動的にリストボックスに設定されてしまい、選択して右クリックで「コントロール種類の変更」を選んでもオプションボタンを選ぶことが出来ません。最終的には乙フィールド名のラベルがあり、オプショングループで囲まれるようなイメージがあり、二つのオプションボタンのどちらかにチェック入れることが出来るものを目指します。

  • ユーザーフォームいろいろについて

    いろいろ手探りでVBAでユーザーフォームを作成し コマンドボックスによりテキストボックスを指定のセルへ転記し ユーザーフォームを終了させるという簡単ですがプログラミングをしました。 さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。 1.2種類のユーザーフォームを作成し、ファイルを開くと  選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く 2.チェックボックスまたはラジオボタンで選択された項目を  指定のセルへ○を反映させたい。 以上のことを加えたいのですが、できますでしょうか。 つたない説明ですが御回答の程宜しくお願い致します。

専門家に質問してみよう