
オプションボタンのマクロに関して教えて下さい。
マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。
「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタン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」に変えてみたのですが、やっぱり駄目でした。
ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。
ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんばんは。
出来れば、そろそろコントロールツール側のコントロールをお使いになってください。
今から、フォーム(ダイアログシートを含む)を勉強しようとしても、資料も手に入らないでしょうし、今は、隠しオブジェクトになってしまいましたので、インテリセンスが利きません。フォームのコントロールは、コントロール配列の真似事が出来ますので便利ですが、少し、その分、深く勉強しないと難しいのです。(Ver.5のマニュアルには詳しく出ています)
それと、オプション1_Click 等は、右クリックで自動記録で出来ますので、それは手をつけませんが、一応、「Sub オプションボタン()」の2バイト文字の名称は、ユーザーが作成するプロシージャなので、なるべくアルファベットでつけてください。
なお、コントロールの名称は間違ってませんが、マクロで操作するには、私には、どうも曖昧さが残るような気がします。
それと、フォームのオプションボタンの戻り値は、1 と0で、True / False ではありません。今回は、組み込み定数を使いました。(xlOn)
この説明は、少し難しいかもしれませんね。
'標準モジュール
Sub OptionButtonsMcr()
'シート名は必ず入れます。
With Worksheets("Sheet1")
If .OptionButtons("Option Button 1").Value = xlOn Then
.Range("a1").Value = 1
ElseIf .OptionButtons("Option Button 2").Value = xlOn Then
.Range("a1").Value = 2
Else
.Range("a1").Value = 0
End If
End With
End Sub
Sub オプション1_Click()
Call OptionButtonsMcr
End Sub
Sub オプション2_Click()
Call OptionButtonsMcr
End Sub
なお、Index を使った、もっと簡単な方法もありますが、逆に、その考え方は自体は難しくなります。すべて以下のマクロに登録すればよいです。Sub オプション1_Click() 等の個別のマクロは必要ありません。
'補足(Index を使った方法)
'---------------------------
Sub OptionbuttonsMcr()
Dim i As Integer
With Worksheets("Sheet1")
i = .OptionButtons(Application.Caller).Index
If i < 3 Then
.Range("a1").Value = i
Else
.Range("a1").Value = 0
End If
End With
End Sub
ご回答ありがとうございます。
No.2さんにも言われてますが、フォーム以外の存在は知りませんでした。
文法の意味はまだ理解できていませんが、この方法で希望の処理ができました。
もっと勉強してコンソールツールのスキルを身につけたいと思います。
No.4
- 回答日時:
こんにちは。
KenKen_SP です。[表示]-[ツールバー]-[フォーム]での一例です。あくまでサンプルなので、
新規シートで下記の手順どおり、取り合えずお試し下さい。
1. Sheet1 で[表示]-[ツールバー]-[フォーム]のオプションボタンを3つ
書き込みます。
2. VBE で標準モジュールに下記コードを貼り付けます。
Sub ShapeOptionButton()
Dim vntVal As Variant
' 次行のシート名は必要があれば書換え
With ThisWorkbook.Worksheets("Sheet1")
vntVal = 0 ' <-- その他のとき
Select Case Application.Caller
' オプションボタン名と対応させる値を列挙します
' オプションボタン名は数式バーの横に表示されてます
Case "オプション 1": vntVal = 1
Case "オプション 2": vntVal = 2
Case "オプション 3": vntVal = 3
End Select
.Range("A1").Value = vntVal
End With
End Sub
3. 再び Sheet1 に戻り、オプションボタンをひとつ選択。右クリック
メニュー[マクロの登録]で[ShapeOptionButton]を”選んで”(ココ重要)
[OK] をクリックし、登録します。
この作業を全てのオプションボタンに対し行います。
この方法はイベントプロシージャなどをズラズラ書かずに済みますので、
手を抜きたいときは私は結構使ってマス(´・ω・`)
ご回答ありがとうございます。
文法の意味はまだ理解できていませんが、この方法で希望の処理ができました。
やっぱりマクロの記録の多様じゃなくて、ちゃんと一から勉強した方が良いのでしょうね・・・。
No.2
- 回答日時:
表示-ツールバー-フォームのオプションボタンと
表示-ツールバー-コントロールツールボックスのオプションボタン
があり混乱されているようです。
Private Sub OptionButton1_Click()
はコントロールツールボックスのオプションボタンを使用する際につかう記述でしょう。
ツールバー-フォームのオプションボタンであれば、使用したいマクロを標準モジュールに作成して、「マクロの登録」で指定します。
なお、ツールバー-フォームのオプションボタンであればマクロを使わなくても、右クリックして「コントロールの書式設定」を開き、コントロールタブのリンクするセルを A1 に指定すれば希望に近いものになると思いますが、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBAでオプションボタンを無効にする方法
Excel(エクセル)
-
フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ
Visual Basic(VBA)
-
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
-
4
【エクセル】オプションボタンにセルの値を反映させるには
Visual Basic(VBA)
-
5
オプションボタンを別シートに連動
Excel(エクセル)
-
6
エクセルVBA/フォームのオプションボタンを元に戻す
Excel(エクセル)
-
7
エクセルVBAでOptionButtonのオンオフ取得
Excel(エクセル)
-
8
UserForm1.Showでエラーになります。
工学
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表計算ソフトでの様式の呼称
-
vba テキストボックスとリフト...
-
エクセルのVBAで集計をしたい
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【マクロ】元データと同じお客...
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
【マクロ】【配列】3つのシー...
-
Office2021のエクセルで米国株...
-
【マクロ】【相談】Excelブック...
-
エクセルでフィルターした値を...
-
【画像あり】【関数】指定した...
-
エクセルのリストについて
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
エクセルの複雑なシフト表から...
-
【関数】=EXACT(a1,b1) a1とb1...
-
エクセルシートの見出しの文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Google Mapで、都市高速は使わ...
-
皆さんが思うヤリスにつけるべ...
-
ドリフト
-
Excelでオプションが開けない
-
「Excelのオプション」の「ユー...
-
オプションボタンの三択(アク...
-
Access2007で複数のチェックボ...
-
AcsessでオプショングループをN...
-
エクセルVBAマクロのオプシ...
-
画像やオートシェイプの単位が...
-
OUTLOOK2000 アラームの表示に...
-
Excel2007でのコピー&ペースト...
-
リブレオフィスの予測表示の停...
-
オプションの売りについて
-
xpでマウスのsingle clickでapp...
-
エクセルVBA/フォームのオプシ...
-
投資初心者です。ガバードコー...
-
ocnモバイル 契約中のサービス変更
-
カラーボックス+オプションパ...
-
バイナリーオプションで200万円...
おすすめ情報