
オプションボタンのマクロに関して教えて下さい。
マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。
「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタン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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Excel(エクセル) [貼り付けオプション]とは? 3 2022/04/17 08:15
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
このQ&Aを見た人はこんなQ&Aも見ています
-
フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ
Visual Basic(VBA)
-
エクセルVBAでオプションボタンを無効にする方法
Excel(エクセル)
-
【エクセル】オプションボタンにセルの値を反映させるには
Visual Basic(VBA)
-
-
4
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
5
エクセルVBA/フォームのオプションボタンを元に戻す
Excel(エクセル)
-
6
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
7
エクセルVBAでOptionButtonのオンオフ取得
Excel(エクセル)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
UserForm1.Showでエラーになります。
工学
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
オプションボタンを別シートに連動
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【マクロ】元データと同じお客...
-
エクセルのリストについて
-
エクセルの複雑なシフト表から...
-
【マクロ】変数に入れるコード...
-
【マクロ】別ファイルへマクロ...
-
Amazonでマイクロソフトオフィ...
-
【マクロ】【相談】Excelブック...
-
エクセルシートの見出しの文字...
-
【マクロ】数式を入力したい。...
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
【マクロ】実行時エラー '424':...
-
エクセル GROUPBY関数について...
-
Office2021のエクセルで米国株...
-
Excelで4択問題を作成したい
-
エクセルのVBAで集計をしたい
-
別のシートの指定列の最終行を...
-
ページが変なふうに切れる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ドリフト
-
ヤリスハイブリッドZを買おうと...
-
Google Mapで、都市高速は使わ...
-
Excelでオプションが開けない
-
皆さんが思うヤリスにつけるべ...
-
エクセルVBA/フォームのオプシ...
-
オプションボタンの三択(アク...
-
Access2007で複数のチェックボ...
-
AcsessでオプショングループをN...
-
エクセルVBAマクロのオプシ...
-
デリバティブ(先物・オプショ...
-
[Google カレンダー] 定期的な...
-
画像やオートシェイプの単位が...
-
オプション
-
rsyslogの出力テンプレートにつ...
-
リブレオフィスの予測表示の停...
-
macのvimでクリップボードとバ...
-
投資初心者です。ガバードコー...
-
日経225先物オプションについて、
-
「Excelのオプション」の「ユー...
おすすめ情報