これからの季節に親子でハイキング! >>

Excel2003にて、ワークシートにActiveXのFrameを作成して、複数のオプションボタンを配置したい。
しかし、デザインモードでは配置できるのですが、デザインモードを終了すると途端にこれらのボタンは表示されません。この解決方法をご存じの方は教えて頂けませんか。VBAのUserFormのFrameの理解でいたのですが。MultiPageでも同様な現象です。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

FrameとOptionButtonが同階層に配置されているからです。


デザインモードでOptionButtonをドラッグするとFrameの外までドラッグできてしまうでしょう?

デザインモードでFrame右クリック[フレームオブジェクト]-[編集]を選択してください。
「ツールボックス」が表示されます。
(表示されない場合はさらにFrame右クリックして[ツールボックス]を選択する必要があります)
この「ツールボックス」からOptionButtonを配置してください。
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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)配置しています。

excel2010

フレーム内のオプションボタン状態の取得方法について教えてください。

従来、オプションボタンの状態はLinkedCellにセルアドレスを設定(H2と設定)すれば、
下記の様に設定すれば、チェックが入っているかどうかを確認できました。

If Range("H2") = True Then …(1)

今回、オプションボタンを大きく設定したかったので、
excel2010の
開発→挿入→コントロールの選択で
Microsoft Forms 2.0 Frame を選択し、フレームを作成。
フレームオブジェクト→編集でZOOMを200に設定。
ツールボッ...続きを読む

Aベストアンサー

こんにちは。お邪魔します。

> フレーム内のオプションボタン状態の取得方法について教えてください。

> このフレーム内に設定したオプションボタン(OptionButton1)が選択されているかどうかを
> 確認する方法を知りたいのです。

直接的な回答として。

Microsoft Forms 2.0 Frame のオブジェクト名がFrame1だとして、
(各名前は運用に合わせて修正してください)
Frameオブジェクトを配置しているシートのシートモジュールに記述する場合は
  If Frame1.Controls("OptionButton1").Value = True Then
とか
  If Frame1.Controls("OptionButton2").Value = True Then
とか。
他のモジュールから参照する場合は、
  If Sheets("シート名").Frame1.Controls("OptionButton1").Value = True Then
とか
  If Sheets("シート名").Frame1.Controls("OptionButton2").Value = True Then
とか。

そもそも、オプションボタンの状態は、LinkedCellを介さずとも
If OptionButton1.Value = True Then
とか
If OptionButton2.Value = True Then
のように取得するのが標準です。

オプションボタンの状態を間接的に取得する目的だけで
LinkedCellプロパティを設定していたのであれば、それは不要です。
他の目的でLinkedCellプロパティを用いたい、というようなお話ではないようですから、
オプションボタンの.Valueプロパティを直接に取得するようにすれば解決するのではないでしょうか。

こんにちは。お邪魔します。

> フレーム内のオプションボタン状態の取得方法について教えてください。

> このフレーム内に設定したオプションボタン(OptionButton1)が選択されているかどうかを
> 確認する方法を知りたいのです。

直接的な回答として。

Microsoft Forms 2.0 Frame のオブジェクト名がFrame1だとして、
(各名前は運用に合わせて修正してください)
Frameオブジェクトを配置しているシートのシートモジュールに記述する場合は
  If Frame1.Controls("OptionButton1").Value = True Then
とか
...続きを読む

QEXCELのActivXコントロールについて

自分なり解決法をさがしたのですが
どうしても分からないので質問しました。
宜しくお願いします。

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に変えたり
ユーザーフォームでやれば可能ですが・・・

対処法あれば
宜しくお願い致します。

自分なり解決法をさがしたのですが
どうしても分からないので質問しました。
宜しくお願いします。

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コントロール内のOptionButt...続きを読む

Aベストアンサー

#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

#1、2、cjです。

この課題は運用の仕方の方が難しく感じる人多いかな、と思い直したので、
サンプルを改めます。

ブックを開けば、Frame上に配置した OptionButtonのイベントが有効になるような
簡易版のサンプルです。

' ◆◆ や ' ◆ で示した行の
各オブジェクト名には注意して必要なら書き換えるようにしてください。

特に' ◆◆ の行、Sheet1 2カ所については、注意!
シート名ではなくて、
VBAプロジェクトでのオブジェクト名です。
VBE画面の左側にあるプロジェクトエクスプローラを見ると
 ■...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QエクセルVBA フレーム内のイベント

フレーム内に、テキストボックスを配置し、
そのテキストボックスをExitした場合にFormatを変更したいのですが、
フレーム内にテキストボックスがあるためかイベントが発生しません。

  1) Frame1 の中に Textbox1 を配置
  2) Textbox1には数値を入力
  3) 入力後、次のコントロールに移動した場合、
   Textbox1.textをformat(Textbox1.text,"#,##0")にする

  Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    msgbox "Exit"
  End Sub
  としましたが、ユーザフォームを終了した時に、msgが出力されます。

フレーム内のイベントはどのようにすればよいか、教えていただきたいです。
よろしくお願いいたします。

Aベストアンサー

AfterUpdateイベントではだめでしょうか?

Private Sub TextBox1_AfterUpdate()
  msgbox "Exit"
End Sub

Qチェックボックスの箱のサイズとフォントサイズは変更できるの?

こんにちわ。

エクセル2000でチェックボックスを作成したのですが、
やや、小さいのでサイズを大きくしたいのです。
ボックスサイズ、ボックスの横に入れる文字の
フォントサイズは大きくできるのでしょうか?
もし、できるのなら方法を教えてください。

よろしくおねがいします。

Aベストアンサー

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセルにチェックボックスの説明のテキストを入れます。
 セルの書式設定でフォントが変更できます。
(2)チェックボックス(四角)をセルの境目などにセットする場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 図形描写からテキストボックスを選択し、チェックボックスの説明のテキストを入れます。
 テキストボックスは『線なし』にしておきます。2行で表示したりもできます。
 チェックボックスとテキストボックスを重ねて、見た目を調節します。
 テキストボックスを選択し、右クリック→順序→最背面へ移動 とします。

ご参考に。

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセ...続きを読む

Qエクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?

CheckBoxが
CheckBox1,CheckBox2,…6
まであり、

If CheckBox1.Value = True Then…

とするときに、数字「1」の部分を変数にしたいのですが、どのようにすれば可能でしょうか。
よろしくお願いします。

Aベストアンサー

> ・ワークシート上のもの(ツールバー[コントロール ツールボックス]から)
> になります。

#3-4 は Userform の CheckBox に対する回答です。[コントロール ツールボックス]
だったのですね。

今回は For でループさせてませんが、必要なら今までの回答を応用して下さい。

  i = 1
  ' Cstr 関数は数値を文字列に変換する
  sCtrlName = "CheckBox" & CStr(i)
  
  ' シートモジュールでの Me はワークシート自信を指す
  If Me.OLEObjects(sCtrlName).Object.Value = True Then
    MsgBox sCtrlName & "の状態は True です"
  Else
    MsgBox sCtrlName & "の状態は False です"
  End If

やってみてよく分からなければ、補足して下さい。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QMSCOMCTL.OCXのアップデートの方法

Excel VBAを使っていて
ListviewなどのMSCOMCTL.OCXに依存した
コントロールを使っている場合
MSCOMCTL.OCXに上位互換性がないため、
VBAを含むxlsmファイルを作成したPCとは異なるPCで
そのプログラムを使用するためには
使うPCごとにMSCOMCTL.OCXをアップデートする必要があります。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1198163781

詳細はこのページに書かれてあります。

疑問は、いま、自分が使っているMSCOMCTL.OCXのバージョンが2012年のものなのですが
Windows10にアップグレードするなどした場合に
MSCOMCTL.OCXをアップグレードする必要がありますが
VBAは正常に動作するのでしょうか?

MSCOMCTL.OCXには下位互換性があるのでしょうか?

もし動作しないとして、
一つずつListviewを削除して新規作成するという作業を行う必要があるのでしょうか?
自動更新できる方法があれば教えてください。

Excel VBAを使っていて
ListviewなどのMSCOMCTL.OCXに依存した
コントロールを使っている場合
MSCOMCTL.OCXに上位互換性がないため、
VBAを含むxlsmファイルを作成したPCとは異なるPCで
そのプログラムを使用するためには
使うPCごとにMSCOMCTL.OCXをアップデートする必要があります。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1198163781

詳細はこのページに書かれてあります。

疑問は、いま、自分が使っているMSCOMCTL.OCXのバージョンが2012年のものなのですが
Windows10に...続きを読む

Aベストアンサー

>Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
>「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
その場合にはWin7PCではMicrosoft ListView Control 6.0(SP4)にチェックを入れなおせば
まず問題ないはずです。
ちなみに当方のWin7 Office2010 のMicrosoft ListView Controlの実体ファイルの
製品バージョンは6.01.9839
Win10 Office2016(プレビュー版)のmscomctl.ocxのバージョンも同一でした。
単純なテストですが、2016 → 2010 では問題なかったです
VBAはよく言えば枯れた状態ですので大々的なアップデートは無いでしょう。
あったとしたらMicrosoft ActiveX Data Object x.x Libraryと同様
Microsoft ListView Control 6.0・・・
Microsoft ListView Control 7.0・・・
のように複数バージョンが並行して登録されるとおもいます。

>オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
大多数の人は更新プログラムを自動的にインストールする設定にしたままだと思います。
最新にというかリビジョンを合わせた方がつまらないトラブルにならないと思います。
ただ、近年のアップデートは地雷が多すぎて何とも言えなくなりました。。。

>Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
>「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
その場合にはWin7PCではMicrosoft ListView Control 6.0(SP4)にチェックを入れなおせば
まず問題ないはずです。
ちなみに当方のWin7 Office2010 のMicrosoft ListView Controlの実体ファイルの
製品バージョンは6.01.9839
Win10 Office2016(プレビュー版)のmscomctl.ocxのバージョンも同一でした。
単純なテストですが、2016 → 2010 では問題なかったです
VBAはよく言えば枯れた状...続きを読む

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Qエクセルで別ブックをバックグラウンドでオープンする方法

最初にメニュー画面となるブックを開いた後、データブックをバックグランドのみで開きたいのですが、エクセルVBAで単純にOPENを行うと画面上にデータブックが表示されてしまいます。操作作業者に画面が次々入れ替わることを見せたくないのですが、ブックをバックグラウンドだけで開く方法はあるのでしょうか。VBAについては素人で宜しくお願いします。

Aベストアンサー

ごめんなさい。解決済みと思って見ていませんでした。 まだですか?

後で開いた3つのブックは、VBAで操作しないのですか。
操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい
と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・

こんな感じで如何でしょうか。

ブックを開いてから非表示にするまでの瞬時の画面のことですね。
それなら、その間、ScreenUpdating = False でどうでしょうか。

Public Bk1 As Workbook
Public Bk2 As Workbook
Public Bk3 As Workbook
Dim PathName As String

Sub Auto_Open()
PathName = ThisWorkbook.Sheets("メニュー").Range("C28").Value
ファイル読込 "初期値.xls", Bk1
ファイル読込 "データ1.xls", Bk2
ファイル読込 "データ2.xls", Bk3
End Sub

Sub ファイル読込(BkName, ObjBk)
Application.ScreenUpdating = False
Set ObjBk = Workbooks.Open(Filename:=PathName & "\" & BkName)
Windows(BkName).Visible = False
Application.ScreenUpdating = True
End Sub

ごめんなさい。解決済みと思って見ていませんでした。 まだですか?

後で開いた3つのブックは、VBAで操作しないのですか。
操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい
と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・

こんな感じで如何でしょうか。

ブックを開いてから非表示にするまでの瞬時の画面のことですね。
それなら、その間、ScreenUpdating = False でどうでしょうか。

Public Bk1 As Workbook
Public Bk2 As Workbook
P...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

価格.com 格安SIM 料金比較