自分なり解決法をさがしたのですが
どうしても分からないので質問しました。
宜しくお願いします。
OS:WindowsXP SP3
Office:Microsoft Office Excel 2007
1.Worksheet上にActivX Frameコントロール(Microsoft Forms 2.0 Frame)を挿入
2.項番1で挿入したFrame上にActivX OptionButtonコントロールを2つ挿入
(フレームオブジェクト(O)→編集(E)後のツールボックスで挿入)
OptionButtonをクリックしたらイベントで"~する"ということをしたいのですが
デザインモード状態でFrameコントロール内のOptionButtonをダブルクリックしても反応無し
右クリックの"コードの表示..."もグレー表示で選択できません。
仕方ないのでFrameのClickイベントやMouseMoveイベントで対処していますが
出来るならOptionButtonのイベントで処理したいと思い質問しました。
ActivXではなくフォームコントロールのFrameに変えたり
ユーザーフォームでやれば可能ですが・・・
対処法あれば
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
#1、2、cjです。
この課題は運用の仕方の方が難しく感じる人多いかな、と思い直したので、
サンプルを改めます。
ブックを開けば、Frame上に配置した OptionButtonのイベントが有効になるような
簡易版のサンプルです。
' ◆◆ や ' ◆ で示した行の
各オブジェクト名には注意して必要なら書き換えるようにしてください。
特に' ◆◆ の行、Sheet1 2カ所については、注意!
シート名ではなくて、
VBAプロジェクトでのオブジェクト名です。
VBE画面の左側にあるプロジェクトエクスプローラを見ると
■ Sheet1 (Sheet1)
■ Sheet2 (Sheet2)
■ Sheet3 (Sheet3)
□ ThisWorkbook
のような感じで表示されていると思いますが。
シートモジュールについては
■ オブジェクト名 (シート名)
のような表示になっています。
オブジェクト名、シート名、ともに、それぞれ独立して、
ユーザーが名前を付けられるようになっていますし、
シートの削除などあると命名規則にずれが生じて
■ Sheet1 (Sheet3)
■ Sheet2 (Sheet1)
■ Sheet3 (Sheet2)
こんな↑ことになる可能性もあります。
なので、オブジェクト名を知るには、
()の中のシート名を探して、
マッチしたら、()の外、左側にあるオブジェクト名を採るようにします。
以下はより実用に近いテスト用簡易サンプルです。
本格派志向なら、新規にクラスモジュールを挿入して書いてみたいですね。
こういう場合、特にコントロールの数が多い場合なんかは、
別にクラスモジュール用意した方が却って扱い易いかも知れません。
試す時は、新規のブックで、必要最小限のことだけして
動作を確認した方が紛れがなくなります。
準備出来たら、保存しておいて、再度開いた時から、機能するようになります。
' ' =====ThisWorkbook モジュール=====
Private Sub Workbook_Open()
Call Sheet1.SetEvOPB ' ◆◆ Sheet1 ?
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Sheet1.SetEvOPB(True) ' ◆◆ Sheet1 ?
End Sub
' ' =====Sheet1 モジュール=====
Private WithEvents myOptionButton1 As MSForms.OptionButton
Private WithEvents myOptionButton2 As MSForms.OptionButton
Private Sub myOptionButton1_Click()
MsgBox "Frame上に配置した OptionButton1 がクリックされました。"
End Sub
Private Sub myOptionButton2_Click()
MsgBox "Frame上に配置した OptionButton2 がクリックされました。"
End Sub
Sub SetEvOPB(Optional ByVal Clear As Boolean)
If Clear Then
Set myOptionButton1 = Nothing
Set myOptionButton2 = Nothing
Else
Set myOptionButton1 = Frame1.Object("OptionButton1") ' ◆ Frame1 ? OptionButton1 ?
Set myOptionButton2 = Frame1.Object("OptionButton2") ' ◆ Frame2 ? OptionButton2 ?
End If
End Sub
No.2
- 回答日時:
#1、cjです。
書き忘れましたが、
Private Sub Worksheet_Activate()
や
Private Sub Worksheet_Deactivate()
は、
あくまでもテスト用(掲示用)のサンプルですので実用向きではありません。
実際には
ThisWorkbookモジュールの、Workbook_OpenやWorkbook_BeforeClose
などのイベントで、設定、解放するようにした方がいいと思います。
また、今回に限った話ではありませんが、
ActiveXコントロールを扱う上で、
ActiveXコントロールにフォーカスが残っている場合に、
Applicationのメソッドが実行時エラーになることもあるので
そんな時は一旦ActiveCell.Activate等の処理をしてから
シートをアクティブにして、メソッドに進むようにしてください。
ここら辺の挙動はバージョンごとに細かく変化しているらしいのですが、
実は私はExcel 2007はあまりよく知らないのです。
滅多にあることではありませんけれど、記憶の隅にでも置いておいてください。
以上です。
連絡遅れてすいません。
回答ありがとうございました。
教えて頂いた内容通り実施しましたら
オプションボタンでのイベント処理が可能になりました。
ありがとうございました。
No.1
- 回答日時:
こんな感じでしょうか?
一応、VBEのコードペイン上部左にある[オブジェクト]にも
myOptionButton1 が表示されるようになりますので、
各種イベントはその右にある[プロシージャ]を参照してください。
' ' シートモジュール先頭、宣言部に以下
Private WithEvents myOptionButton1 As MSForms.OptionButton
' ' シートモジュールに続けて
Private Sub myOptionButton1_Click()
MsgBox "Frane上に配置したOptionButton1がクリックされました。"
End Sub
Private Sub Worksheet_Activate()
Set myOptionButton1 = Frame1.Object("OptionButton1")
End Sub
Private Sub Worksheet_Deactivate()
Set myOptionButton1 = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- Excel(エクセル) Excel ヘルプの[ロック解除]、<c0>、</c0> の意味は何ですか? 1 2023/02/20 16:58
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) EXCEL ActiveX コマンドボタンで実行する前にいったんmsgBoxで確認を求めたい 1 2022/07/06 19:41
- Word(ワード) Google ドキュメントで改ページを挿入する方法 1 2022/05/25 19:22
- Excel(エクセル) [スライサー]に関して、 1 2022/05/24 21:07
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Word(ワード) Office 365のWordでオブジェクト挿入であるWord文書にほかのWord文書やPDFを貼り 2 2022/05/09 15:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントの画面がずれる
-
Excelで隠れてしまった図...
-
Excelにメールを添付する
-
イラストレーターの面積を求める
-
excelでチェックボックスが表示...
-
エクセルに入力しようとすると...
-
テキストボックスがないのに、...
-
パワーポイントにエクセルの表...
-
pdf xchange viewer オブジェク...
-
エクセルからワードへの表挿入...
-
ワード。表の中に図形を入れた...
-
mayaでの透明化アニメーション
-
excelの表をautocadに取り込ん...
-
illustrator 別ファイルの同じ...
-
Lightwave10 評価毎の光線につ...
-
線や図形等のオブジェクトの選...
-
Powerpointで文字飾りのルビは...
-
エクセルで作成したものをワードに
-
挿入したワークシートの移動方法。
-
数式エディタのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントの画面がずれる
-
Excelで隠れてしまった図...
-
Excelにメールを添付する
-
パワーポイントにエクセルの表...
-
excelでチェックボックスが表示...
-
pdf xchange viewer オブジェク...
-
ExcelでB5をA4にしたい。
-
イラストレーターの面積を求める
-
テキストボックスがないのに、...
-
エクセルに入力しようとすると...
-
花子10の図形をワードやエク...
-
エクセルに任意のページのワー...
-
EMBED関数について
-
Wordのツールバーに常に数...
-
エクセルからワードへの表挿入...
-
Wordのオブジェットと図の違い...
-
【エクセル】列を挿入しようと...
-
文字の特定箇所に背景色をつけ...
-
オートシェイプが消えたり出た...
-
エクセルの[コントロールの書式...
おすすめ情報