• 締切済み

Excelの「OptionButton」について

Excelで新しいシートを開き、VBE画面でユーザーフォームを挿入し、そのフォームにOptionButton1とOptionButton2を配置しました。OptionButton1,2のControlSourceをそれぞれA1、A2にしOptionButton1のValueをTrueにします。 この状態でフォームを表示し最初にOptionButton2をクリックすると両方のオプションボタンがOffになってしまいます。フォームを表示したまま2回目からのクリックではOn、Offがうまく切り替わります。ControlSourceをセットしなければ1回目のクリックでもうまく切り替わるみたいです。作り方がおかしいのでしょうか?

みんなの回答

noname#420
noname#420
回答No.1

私も上記質問内容について試しましたが、同じような現象になりました。おそらくこの現象は下記URLのEXCEL97の仕様に準じていると思います。(下記URLはVBE上のフォームコントロールの現象例ではありませんが。)

参考URL:
http://www.microsoft.com/japan/support/kb/articles/J027/2/87.htm
yosikun
質問者

お礼

コメントありがとうございます。参考URLを見ました。やはりバグ(仕様?(^^;)ということなんでしょうね・・・。 他にも、複数のボタンを作成すると、全部[true]になってしまうケースもあるんですよ・・・。(再現が難しいので質問には書きませんでした)問題の完全解決にはなりませんでしたが、大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA OptionButton

    Excel VBAのOptionButtonについてお伺いします。 現在、Excel2007にてユーザーフォームを作成しております。 シート上の文字によって、ユーザーフォーム上のオプションボタンの ON/OFFを切り替えたいのですがうまく動作しません。 具体的には・・・・ ユーザフォーム上のCommandButton1を押下すると、 sheet2のE22セルの文字がTRUEの場合、ユーザーフォーム上の OptionButton1がON・OptionButton2がOFF sheet2のE22セルの文字がFALSEの場合、ユーザーフォーム上の OptionButton1がOFF・OptionButton2がON 以下のように考えていたのですが、動作しません。 ------------------------------ Private Sub CommandButton1_Click() If sheet2.Range("E22").Value = "TRUE" Then OptionButton1.Value = True ElseIf sheet2.Range("E22").Value = "FALSE" Then OptionButton2.Value = True End If ------------------------------ お知恵お借りしたく存じます。 宜しくお願い致します。

  • エクセル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 を指示すればいいのでしょうか?

  • エクセル OptionButton

    FromにOptionButtonを貼り付けてセルの値を呼び出してFromのTextBoxなどに表示させるものを作成して上手くいっていましたが・・・・・ OptionButton1をクリックしたらSheetのセルに”男”と記載される マクロを作成しました。(以下の通りです) If オプション事故 = True Then SH2.Cells(lngNumber, 6) = "男" ElseIf OptionButton1 = True Then SH2.Cells(lngNumber, 6) = "男" ElseIf OptionButton2 = True Then SH2.Cells(lngNumber, 6) = "女" End If 今回困っているのはこれの逆で、セルの値が”男”なら OptionButton1にマークが付くようにしたいのですが こんなことできますか?下記のようにしてみましたができません! If SH1.Cells(lngNumber, 6) = "男" Then OptionButton1.Value = True ElseIf SH1.Cells(lngNumber, 6) = "女" Then OptionButton2.Value = True End If すいません教えて下さい!!

  • エクセルでユーザーフォーム

    エクセルでユーザーフォームやActiveXコントロールを使ったことがないので悩んでいます。ユーザーフォームを呼び出したとき、表示されるオプションボタンの状態をワークシート上の値で設定したいのです。一応以下のようなコードでも大丈夫なようです。 質問は、以下のようにすべてのオプションボタンを列挙しなくとももっと簡単に記述する方法を教えていただきたいのです。また書き方が変だというご指摘があればそれもよろしくお願いします。 Private Sub UserForm_Initialize()   Select Case Sheets("Sheet1").Range("L3").Value     Case 1: Me.OptionButton1.Value = True     Case 2: Me.OptionButton2.Value = True     Case 3: Me.OptionButton3.Value = True     Case 4: Me.OptionButton4.Value = True     Case 5: Me.OptionButton5.Value = True     Case 6: Me.OptionButton6.Value = True     Case Else      Me.OptionButton1.Value = False      Me.OptionButton2.Value = False      Me.OptionButton3.Value = False      Me.OptionButton4.Value = False      Me.OptionButton5.Value = False      Me.OptionButton6.Value = False   End Select End Sub

  • エクセルVBAマクロのオプションボタンについて

    オプションボタンのマクロに関して教えて下さい。 マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。 「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。 色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。 Private Sub OptionButton1_Click() オプション1 = True End Sub Private Sub OptionButton2_Click() オプション2 = True End Sub Sub オプションボタン() If オプション1 = True Then Range("a1") = 1 ElseIf オプション2 = True Then Range("a1") = 2 Else Range("a1") = 0 End If End Sub 作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。 ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。 ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。

  • オプションボタンの名前を変更したい

    Excel2007を使用しています。VBAでの質問です。 ユーザーフォームに、タブストリップを作成し、その中にラベルとオプションボタンを配置しました。 タブは4ページありますが、切り替わるごとにラベルとオプションボタンの表示が下の様に変わるようにしたいのです。 (1) Label1 の value → ワークシート"緑"のA列に入力されている文字 (2) OptionButton1 の caption → ワークシート"緑"のB列に入力されている文字 (1)のラベルは、ネットで調べわかりました。  Private Sub TabStrip1_Change()    Dim myindex As Integer    myindex = TabStrip1.Value    Label1.ControlSource = "緑!A" & myindex  end sub (2)でも、(1)と同じように ControlSource で変わると思いましたが、valueでしかできないようです。 オプションボタンでも同じように表示を変えたいのですが、どのようにすればいいでしょうか? よろしくお願いします。

  • excelのVBAについてです。

    ユーザーフォームの中に10個以上のオプションボタンがあります。どのボタンが選択されているかを判定するのに if optionbutton1.value=true then ... else ... if optionbutton2.value=true then ... else ... ... ... のように、すべてのボタンに対してif then ステートメント記述しています。 この部分をもう少し簡単にできないかなというのが今回の質問です。教えてください。よろしくお願いします。

  • Optionbuttonを独立して使用するには

    さっそくですが 質問です 今回はOptionButtonをパソコンの電源ランプの様に 単なる表示として使用したいのですが可能でしょうか? OptionButtonをフォーム2つ貼り付けたとします (OptionButton1, OptionBUtton2) 通常ですと 画面上でOptionButton1をクリックすると OptionButton1が選択の状態になりOptionButton2が非選択 の状態になるかと思います この動作を次のようにできないでしょうか? 1 OptionButton1が非選択の状態でクリックしても 選択の状態にならない 2 OptionButton1及び2を同時に選択の状態にする よろしくお願いします 環境 WindowsXP SP2 VisualBasic6.0 SP6

  • VBA EXCEL optionbuttonの選択

    現在オプションボタンにて設定下記のようにしています。 オプションボタンをいくつか設置しており、どれか選択すると下記のコードへ飛んできます。 どれか選択すると、enabledをtrueにし、OKボタンをクリックできる。そしてどのオプション ボタンを選択したのか他のモジュールから確認する為tagにその痕跡を残すように設定しています。 Public Sub OptionButton1_Click() 'オプションボタン選択動作。OKボタンを有効へ Cmd_ok.Enabled = True OptionButton1.Tag = True End Sub Public Sub OptionButton2_Click() 'オプションボタン選択動作。OKボタンを有効へ Cmd_ok.Enabled = True OptionButton2.Tag = True End Sub Public Sub OptionButton3_Click() 'オプションボタン選択動作。OKボタンを有効へ Cmd_ok.Enabled = True OptionButton3.Tag = True End Sub ****************** そして下記のコードでどのオプションボタンが選択されたのか確認しています。 For i = 1 To 3 If UserForm1.Controls("OptionButton" & i).Tag = True Then xxx = i End If Next i ******************** 一番上にある『OptionButton1.Tag = True』と設定しているものを選択されたオプションボタン からみて相対的な表現に変更できないでしょうか? 意味としては『現在選択されているオプションボタンのtag = true』といった表現です。 現状でも目的は果たせますが、これからボタンが複数になった場合、オプションボタンのオブジェクト名を変更しなくなった時に手間がしないようにする事が目的です。 もしくはもっとスマートなコードがあれば歓迎です。 ご指導お願いします。

  • OptionButton1.2.3がうまく動かない

    セルA1,B1,C1に1、2、3のいずれかを選択して記入させられるマクロを作成したく、以下のようなマクロを試作しましたが期待どうりに行きません。添削いただけると幸甚です。UserForm1(UF1)に3つのComandButton(CB)を設置し、CB1にUF2が、CB2にUF3が、CB3にUF4がそれぞれ表示(.Show)され、UF2,3,4には其々3つのOptionButton(OB)と1つのCBを設け、UF2に次のコードを記載: OB1.Value=True Then→Range(“A1”)=1 OB2.Value=True Then→Range(“A1”)=2 OB3.Value=True Then→Range(“A1”)=3 UF3、UF4ではA1替えてB1、C1にします。 するとUF2/CB1(A1)はコマンド実行でOB1.2.3の選択ができA1に1、2、3を取得させられるのですが、UF3/CB2(B1)とUF4/CB3(C1)は動作してくれないんです。 UF2,3,4コード同等なのに、何故??? 添削または貴方なりのマクロ記載頂ければ有り難く宜しくお願い致します。

このQ&Aのポイント
  • ルーターを新調したところ、DCP-J963Nがオフラインになる症状が出て治らない状況です。
  • プリンタデバイスを削除し、ドライバの再インストールなどを試しましたが、製品が見つかりません。
  • パソコンはWindows 10 Homeで無線LANで接続されています。関連するソフトや電話回線の情報はわかりません。
回答を見る

専門家に質問してみよう