- ベストアンサー
フレーム内のオプションボタン状態取得方法
cj_moverの回答
こんにちは。お邪魔します。 > フレーム内のオプションボタン状態の取得方法について教えてください。 > このフレーム内に設定したオプションボタン(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プロパティを直接に取得するようにすれば解決するのではないでしょうか。
関連するQ&A
- ExcelVBAでオプションボタンの選択状態を取得
ActiveXコントロールのオプションボタンをエクセルのシート上に作成しました。 標準モジュールの中からこのオプションボタンの選択状態を取得したいと思い、下記のようなコードを書きました。 opt1の中身を見たところValueプロパティがなくオプションボタンの選択状態をどう判別すればよいかわかりません。教えていただけますでしょうか。 Set mainSheet = Worksheets("main") Set opt1 = mainSheet.OLEObjects("OptionButton1") ※シート名:main オブジェクト名:OptionButton1
- ベストアンサー
- Visual Basic
- シート上のオプションボタン、チェックボックスを配列にする。
シート上のオプションボタン、チェックボックスを配列にする。 Excel2003です。 シート上にオプションボタン、チェックボックスを増やすと、OptionButtonN、CheckBoxN (大文字Nは任意の数値)となります。これをOptionButton(N)のように配列にできないでしょうか? プログラムで扱う場合、配列でしたら処理が楽になると思うからです。 また、同じくシート上にオプションボタンを配置するとどれか1つしか選択できません。(ひとつしかValueをTrueにできません。) UserFormのようにFrameがあればその中で1つを選択できるのですが、シート上に直接配置する場合、Frameが扱えないように思います。グループ化して複数選択する方法はないでしょうか。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- タブストリップの中のオプションボタン
お世話になります。 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が選択されているように見えてしまいます。実際には、セルに反映しているので、後の答え合わせなどは大丈夫なのですが、ユーザーフォームから見直ししたい場合にみると、わかりにくいのではないかと思います。なので、オプションボタンは ・タブを替えても、自分が選択したものにチェックがはいっている。 ・まだ、回答をクリックしてないものには、チェックが入っていない。 つまりタブごとに、違う選択を表示させたいのです。それとも、マルチページで作成したほうがいいのでしょうか? 説明が下手ですみません。どうぞよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAでオプションボタンの設定
ワークシート上にOLEオブジェクトのオプションボタンを配置して、LinkedCellを設定し、同一行でGroupName を設定し、Caption をYesとNoにしようと思いました。 ところが、以下のコードですと、GroupName とCaption がエラーになってしまいます。 どのように直せばいいのでしょうか? エクセル2003です。 Sub test01() Dim n As Long, i As Long With ActiveSheet For n = 1 To 2 For i = 1 To 3 Set opt = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", _ Left:=.Cells(i, n).Left, Top:=.Cells(i, n).Top, Width:=50, Height:=18) opt.LinkedCell = .Cells(i, n).Offset(, 4).Address ' opt.GroupName = "OptG" & i ' opt.Caption = IIf(n = 1, "Yes", "No") Next i Next n End With End Sub
- ベストアンサー
- その他MS Office製品
- エクセルのオプションボタンについて
エクセルVBAの初心者です。 ブックAのSheet1にコントロールツールボックスよりオプションボタンを使って、OptionButton1にA室、OptionButton2にB室、OptionButton3にC室という名前をつけて作成しました。この3つのオプションボタンの内いずれかを選択した時に、別のブックBのSheet1のセルA1に転記したいのですが、VBAを使って転記をすることはできるでしょうか? 分かりにくい説明で申し訳ありませんが、宜しくお願い致します。
- 締切済み
- オフィス系ソフト
- オプションボタン
昨日も質問させていただいたものです。 オプションボタンの使い方について質問があります。 コマンドボタン1つ、テキストボックスを1つ、ラベルを一つ、 フレームを二つ用意し、それぞれのフレームに3つずつオプションボタンを配置します(●フレームA、B●オプションA1、A2、A3、オプションB1、B2、B3とする)。 オプションA1~3には1~3年生というキャプションを、 オプションB1~3には1~3組というキャプションを設定します。 テキストに名前を打ちこんでコマンドボタンを押すと、 ラベルに(テキストが太郎の場合)"太郎は3年1組です" と表示されるようなものを作ろうと考えています。 コマンドボタンを使用せずに、オプションボタンのみで作ると Privat Sub OptionA1_Click() If OptionB2.Valrue=True Then Label1.Caption="" と言うような感じで何個も書けば良いと思うのですが、 これにをコマンドボタンで実行させようとすると方法がわかりません。 アドバイスお願いします。
- ベストアンサー
- Visual Basic
- VBA オプションボタンの分類について
http://okweb.jp/kotaeru.php3?q=1424026 でオプションボタンの表示に関して質問をした者です。 ボタンを自動作成する事はできたのですが例えば1日と15日に 休暇を取得した場合、ボタンが6つ表示されるのですが(1日分が3コ、15日分が3コ)、 この6つのボタンのうち1つしか選択ができません。 (2つ目を選択すると、前に入力していたものはチェックが外れる。) 日にちごとに、1つずつボタンを選択するようにするにはどうしたら良いのでしょうか? ちなみに、当該処理の今記述しているソースは以下のとおりです。 休暇情報の書き出しが終了するまでループで回しています。 ご教授ください。宜しくお願い致します。 '当日ボタン作成 Set objOLEToday = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=565, Top:=100 + objCnt, Width:=45.5, Height:=15.5) objOLEToday.Object.Caption = "当日" '事前ボタン作成 Set objOLEBefore = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=750, Top:=100 + objCnt, Width:=45.5, Height:=15.5) objOLEBefore.Object.Caption = "事前" '無断ボタン作成 Set objOLENotice = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=920, Top:=100 + objCnt, Width:=45.5, Height:=15.5) objOLENotice.Object.Caption = "無断" '表示位置設定 objCnt = 405.4 + objCnt
- 締切済み
- Visual Basic
- Excelのシートにオプションボタン設置したい
Excel2000を使ってます。ワークシートに直接、いくつかのオプションボタンをフレームの上でグループ化して置きたいと思っています。 メニューの「コントロールツールボックス」にボタン「コントロールの選択」があって、そこに「Microsoft Forms 2.0 Frame」というのがありましたので、それを使ってみたところ、右クリックで「フレームオブジェクトの編集」から、フレーム上にオプションボタンを設置することができましたが、そのボタンに「コードの表示」ができないので、これ以上、前に進めません。 ウエッブ検索等で調べてみましたが、説明してるサイトを見つけることができません。UserFormのように、オプションボタンにコードを記入したいのですが、どのようにすればいいのかご存知の方、いらっしゃいませんでしょうか。
- ベストアンサー
- オフィス系ソフト
- どのボタンもチェックされていない状態も受け付けるオプションボタンは可能?
java初心者です。アプレットを勉強しています。 タイトル通りなのですが、どのボタンもチェックされていない状態も受け付けるオプションボタンは可能でしょうか?二つボタンを用意したとしたら「どちらも選択されていない」「どちらか一つだけ選択されている」だけ受け付けて、「両方選択されている」は受け付けたくないのですが。。 よろしくお願いします。
- 締切済み
- Java
- オプションボタンについて
VBAはまだやり始めたばかりで、ちょっとわからないので、教えて 下さい。 TextBox1~19に金額を入力すると、 TextBox60に小計 TextBox61に消費税 TextBox62に合計 が入るように設定してあります。 TextBox61のよこに OptionButton1 切捨て OptionButton2 切り上げ OptionButton3 四捨五入 OptionButton4 税込み(「-」を入力) を設定し、オプションボタンを選択するごとに、TextBox61の 消費税設定を変えたいと思っています。 標準では下記のコードでOptionButton1が選択されるように してあります。 オプションボタンで切り替えるにはどのようにしたら よいでしょうか。。。 Private Sub 合計Sub(ByVal myTextBox As MSForms.TextBox) Const cnsTax As Double = 0.05 Dim i As Long Dim v(1 To 19) As Long Dim y(60 To 62) As Long ' With myTextBox .Value = Format$(.Value, "#,##0") End With '再計算 On Error Resume Next For i = 1 To 19 v(i) = CLng(Me.Controls("TextBox" & i).Value) Next With Application.WorksheetFunction y(60) = .Sum(v) If myTextBox Is Me.TextBox61 Then y(61) = CLng(myTextBox.Value) Else y(61) = .RoundDown(y(60) * cnsTax, 0) End If y(62) = .Sum(y(60), y(61)) End With On Error GoTo 0 For i = 60 To 62 Me.Controls("TextBox" & i).Value = Format$(y(i), "#,##0") Next End Sub
- ベストアンサー
- Visual Basic