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)配置しています。
No.2ベストアンサー
- 回答日時:
こんにちは。
お邪魔します。> フレーム内のオプションボタン状態の取得方法について教えてください。
> このフレーム内に設定したオプションボタン(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プロパティを直接に取得するようにすれば解決するのではないでしょうか。
No.5
- 回答日時:
#2、3、cjです。
追加レスです。もしかして、LinkedCell設定と同様の機能をVBAで実現させたい、ということもお考えの場合の為に、
参考として、簡易簡略な方法を一例挙げておきます。
解り易さの為、ThisWorkbook モジュールだけで纏めるように書いたサンプルです。
(シート名、
フレームのオブジェクト名、
オプションボタンのオブジェクト名、
リンクさせるセルの番地
は、適切に指定し直してください)
' ' 〓〓〓〓〓〓
' ' ThisWorkbook モジュール
' ' ============
Option Explicit
Private WithEvents myOptBtn1 As MSForms.OptionButton
' ' ============
Private Sub myOptBtn1_Change()
Sheets("Sheet1").Range("H2").Value = myOptBtn1.Value
End Sub
' ' ーーーーー
Private Sub SetOptBtnEv()
Set myOptBtn1 = Sheets("Sheet1").Frame1.Controls("OptionButton1")
End Sub
' ' ============
Private Sub Workbook_Open()
Application.OnTime Now, "ThisWorkbook.SetOptBtnEv"
End Sub
' ' ーーーーー
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set myOptBtn1 = Nothing
End Sub
' ' 〓〓〓〓〓〓
なお、
コントロールの追加や編集を行う際など、デザインモードに切り替わったり、VBAプロジェクトを中断したりすると、
リセットされてしまい機能しませんので、その場合は、Private Sub SetOptBtnEv()を再度実行する必要があります。
追加レス、以上です。
No.4
- 回答日時:
#1の回答者です。
#2,#3を読んで、ご質問を、間違った解釈に取ってしまった気がしましたので、あえて書かせていただきます。あくまでも、Frame内の、オプションボタンの値を取るという方法なら、アクセス・オン・マクロ(マクロで、その場所にアクセス)すれば取得は可能です。
#2さんがお書きになった例をみれば分かるとおりです。
私は読み違えたのは、ワークシート上に、大きなオプションボタンがあり、それから、結果(True, False)を、ワークシートに出すということに対して、イベント発生について代替え案を書いたわけです。
そのあたりの内容を把握せず、オプションボタンの「ズーム」という観点から、代替え案を出させていただいたのです。質問者さんの趣旨を把握せずに、回答を書いたことは、当方の間違えでした。
No.3
- 回答日時:
#2、cjです。
ちょっと解り難いことを書いていたので補足説明、追記です。
> そもそも、オプションボタンの状態は、LinkedCellを介さずとも
> If OptionButton1.Value = True Then
> とか
> If OptionButton2.Value = True Then
> のように取得するのが標準です。
この記述は、オプションボタンをフレーム上ではなくて、シート上に直接配置していた場合の
オプションボタンの状態を取得する方法を説明したものです。
補足、以上です。
No.1
- 回答日時:
こんばんは。
Microsoft Forms 2.0 Frameで、その中のオブジェクトを拡大するのは、たぶん、裏ワザだとは思いますが、その後が、続かないように思います。
もちろん、Frame内のオプションボタンの値自体は、取得できますが、それは、[マクロの実行]という方法、言い換えれば、オプションボタン側から、クリック時にイベントを発生し、値を返してくれるわけではないので、ユーザー側からのアクセスが必要になってしまいます。
実際、そういう場合は、新たに、APIタイマーを使ってイベントを設けることにはなるのですが、今度は、そのイベント自体が、不安定というか、Excel全体に波及してしまうので、私自身の経験としてはお勧めできないわけです。これも裏ワザです。ただし、Excel 2010 では試したことがありません。一部の人は考えるかもしれませんが、たぶん、クラス・イベントは、元が認識していないので、無理だと思います。どなたか、試してみても良いかとは思います。
私としては、もうマクロも長い間書いたことがありませんので、簡単な、オートシェイプでの代用品を考えてみました。図形の「丸」を選んで、それに、マクロの登録をしてあげます。
不格好なマクロかもしれませんが、丸の数は、いくつ作ってもオプションボタンのようになります。
図形の枠線の書式を太くしたりして整えれば、オプションボタンらしくなります。
'//標準モジュールが良い
Sub OptionalShape()
Dim i As Long
Dim Acshp As Shape
Dim Nm As String
Dim flg As Boolean
Const xlOff As Integer = 7 '枠線だけ
Const xlOn As Integer = 9 '塗りつぶし
Set Acshp = ActiveSheet.Shapes(Application.Caller)
Acshp.DrawingObject.ShapeRange.ShapeStyle = xlOn
For i = 1 To ActiveSheet.Shapes.Count
With ActiveSheet.Shapes(i).DrawingObject.ShapeRange
If .AutoShapeType = msoShapeOval Then
If Not .Name Like Acshp.Name Then
.ShapeStyle = xlOff
End If
Cells(i, 8).Value = IIf(.ShapeStyle = xlOn, True, False) '出力--要調整(H列)
End If
End With
Next i
Set Acshp = Nothing
End Sub
'//
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 Windows10でセーフモードが出来ません。 2 2022/04/22 23:37
- モニター・ディスプレイ windows10 モニタに表示されなくなった 2 2023/08/04 16:58
- Excel(エクセル) [貼り付けオプション]とは? 3 2022/04/17 08:15
- SSL・HTTPS シャープのチャンネル設定 2 2022/10/12 21:42
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- メルカリ メルカリに関しての質問です。 登録したお支払い用銀行口座を削除したいのですが、できません。 「支払い 1 2022/11/22 10:25
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ
Visual Basic(VBA)
-
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
-
4
ExcelVBAのコントロールの種類の取得方法
Visual Basic(VBA)
-
5
VBAでオプションボタンによってコンボボックスの内容を変える方法
Visual Basic(VBA)
-
6
UserForm1.Showでエラーになります。
工学
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
9
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
10
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
Excel 2003 VBA Worksheet_Changeの動作速度について
Excel(エクセル)
-
13
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
14
ユーザーフォーム スクロールバー 非表示にしたい
Excel(エクセル)
-
15
EnumChildWindowsの使い方(VBA)
Visual Basic(VBA)
-
16
ユーザーフォームに最小化・最大化ボタンを付ける
Access(アクセス)
-
17
EXCEL(VBA)で指定フォルダ内の最新ファイル名を取得したい
Excel(エクセル)
-
18
ReDim PreserveよりもReDimが遅い
Visual Basic(VBA)
-
19
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
20
VBA データ(特定値)のある最終行を取得したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
UPS警告音を止めたい
-
マクロ初心者です。 msgboxのre...
-
EXCELのマクロが 実行時エラー5...
-
ユーザーフォームをショートカ...
-
入力済み、選択したセルに連動...
-
Excelで、ボタンにコメントをつ...
-
フォームコントロールから作っ...
-
エクセルで、オプションボタン...
-
【Excel VBA】マクロボタンを表...
-
複数シートのボタンに同一の動...
-
ボタンを画像で作るか、CSSでデ...
-
日報の休日ボタン(トグルボタ...
-
マクロを登録しているボタンが...
-
excel スクロールしても常にボ...
-
テキストボックスを消すVBA
-
マクロで作ったボタンのサイズ...
-
Excel ラジオボタンのリセット...
-
ボタンを押しただけで発生する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
UPS警告音を止めたい
-
ユーザーフォームをショートカ...
-
【Excel VBA】マクロボタンを表...
-
Excel ラジオボタンのリセット...
-
Excelで、ボタンにコメントをつ...
-
Accessのフォームでタブの色
-
エクセルで、オプションボタン...
-
マクロで作ったボタンのサイズ...
-
複数シートのボタンに同一の動...
-
フォームコントロールから作っ...
-
エクセルでマクロボタンを押す...
-
EXCELの塗りつぶしのボタ...
-
Excelにストップウオッチ?をつ...
-
EXCELのマクロが 実行時エラー5...
-
マクロ初心者です。 msgboxのre...
-
日報の休日ボタン(トグルボタ...
-
Access VBAでボタンの背景色を...
-
VBAでオプションボタンなどそれ...
おすすめ情報