No.2
- 回答日時:
こんにちは。
こうすればどうでしょうか?
OptionButton のOnAction にマクロを置いて、On/Off を確保させ、他のマクロで、戻させます。
なお、なるべく、ActiveSheetではなく、明示的なシート名のほうがよいです。
Private Ops() As Long
Sub OPValueStock()
'オプションボタンの値を確保
Dim i As Integer
With ActiveSheet
ReDim Ops(1 To .OptionButtons.Count)
For i = 1 To .OptionButtons.Count
Ops(i) = .OptionButtons(i).Value
Next
End With
End Sub
Sub OPRecover()
'オプションボタンの値を戻す
Dim j As Long
Dim i As Integer
On Error GoTo EndLine
j = UBound(Ops())
With ActiveSheet
For i = 1 To .OptionButtons.Count
If Ops(i) = 1 Then
.OptionButtons(i).Value = 1
End If
Next
End With
EndLine:
End Sub
さっそくありがとうございます。
ためしに新しいシートにフォームのオプションボタンを7個配置し、それぞれにSub OPValueStockを設定しました。
オプションボタンを押したのち、Sub OPRecoverを走らせましたが、オプションボタンは元には戻りませんでした。やりかたがまずいのでしょうか?
No.3
- 回答日時:
>VBAはオプションボタンから作動させたいのです
これらのオプションボタンを押す時には条件は整っているのですよね?
単純に下記のような物をオプションボタン全てに登録したのではダメですか?
C1の値が1になると実質オプションの切り替えが利かなくなります。
Sub OpChk()
If Range("C1").Value = 1 Then
Range("A1").Value = Range("B1").Value
Else
Range("B1").Value = Range("A1").Value
End If
End Sub
さっそくありがとうございます。
> これらのオプションボタンを押す時には条件は整っているのですよね?
どのオプションボタンを押したかで、条件が整うのです。仮にC1セルの値が「TRUE」の時に3番目のオプションボタンを押されたら「キャンセル」させるといった具合です。
No.4
- 回答日時:
1、CommandButton1_Click() ----> 1 ON
2、CommandButton2_Click() ----> 3 ON
3、CommandButton3_Click() ----> 1 ON
キャンセルの場合
UpdateOption 0
というルールです。
Private Sub CommandButton1_Click()
MsgBox "1=True"
UpdateOption 1
End Sub
Private Sub CommandButton2_Click()
MsgBox "3=True"
UpdateOption 3
End Sub
Private Sub CommandButton3_Click()
MsgBox "キャンセル"
UpdateOption 0
End Sub
Public Sub UpdateOption(ByVal intIndex As Integer)
On Error Resume Next
Static OldIndex(1) As Integer
Dim OptionsValues(7) As Boolean
intIndex = IIf(intIndex = 0, OldIndex(1), intIndex)
OptionsValues(OldIndex(1)) = False
OptionsValues(intIndex) = True
Me.OptionButton1.Value = OptionsValues(1)
Me.OptionButton2.Value = OptionsValues(2)
Me.OptionButton3.Value = OptionsValues(3)
Me.OptionButton4.Value = OptionsValues(4)
Me.OptionButton5.Value = OptionsValues(5)
Me.OptionButton6.Value = OptionsValues(6)
Me.OptionButton7.Value = OptionsValues(7)
OldIndex(1) = OldIndex(0)
OldIndex(0) = intIndex
Workbooks("sheet1").Refresh
End Sub
No.5
- 回答日時:
s_husky です。
回答を外しましたので訂正!
入力は手動。
キャンセルはコマンドボタンのようです。
ならば、多少、変更が必要です。
Private Sub OptionButton1_Click()
UpdateOption 1
End Sub
Private Sub OptionButton2_Click()
UpdateOption 2
End Sub
|
|
Private Sub OptionButton7_Click()
UpdateOption 7
End Sub
Private Sub cmdCancel_Click()
UpdateOption 0
End Sub
Public Sub UpdateOption(ByVal intIndex As Integer)
On Error Resume Next
Static OldIndex(1) As Integer
Dim OptionsValues(7) As Boolean
Dim isCancel As Boolean
isCancel = intIndex = 0
intIndex = IIf(isCancel, OldIndex(1), intIndex)
If isCancel Then
OptionsValues(OldIndex(1)) = False
OptionsValues(intIndex) = True
Me.OptionButton1.Value = OptionsValues(1)
Me.OptionButton2.Value = OptionsValues(2)
Me.OptionButton3.Value = OptionsValues(3)
Me.OptionButton4.Value = OptionsValues(4)
Me.OptionButton5.Value = OptionsValues(5)
Me.OptionButton6.Value = OptionsValues(6)
Me.OptionButton7.Value = OptionsValues(7)
End If
OldIndex(1) = OldIndex(0)
OldIndex(0) = intIndex
End Sub
No.6
- 回答日時:
こんにちは。
>Sub OPRecoverを走らせましたが、オプションボタンは元には戻りませんでした。
大方、それは、モジュールレベル変数が抜けているのだと思います。
Private Ops() As Long '←これ
ただし、他のプロシージャが同一のモジュールにない場合は、Public にしてくださいね。
> Private Ops() As Long '←これ
いいえ、忘れていません。同一モジュールの一番上にあります。
でも、考えたんですが、各オプションボタンにSub OPValueStock()を登録しても、それで保存されるのはオプションボタンを押した状態での配列ですよね?押す前の状態は保存されないのでは?(よくわかってもないのにすみません)
No.7
- 回答日時:
エクセルは門外漢ですが。
フォームのオプションボタンをはじめて使いました。。。
Option Explicit
Dim OptionIndex As Integer
Private Function CheckCondition() As Boolean
'キャンセルする条件の場合 True を返してね。
CheckCondition = False
End Function
Private Sub SetOption(Idx As Integer, sw As Boolean)
Sheet2.Shapes("Opt" & Idx).ControlFormat.Value = sw
If sw Then
OptionIndex = Idx
Else
OptionIndex = 0
End If
End Sub
Private Sub CheckOption(Idx As Integer)
If Not CheckCondition Then
OptionIndex = Idx
Else
If OptionIndex <> 0 Then
SetOption OptionIndex, True
Else
SetOption Idx, False
End If
End If
End Sub
Public Sub Opt1_Click()
CheckOption 1
End Sub
Public Sub Opt2_Click()
CheckOption 2
End Sub
'・・・・・・
Public Sub Opt7_Click()
CheckOption 7
End Sub
No.8
- 回答日時:
こんばんは。
>でも、考えたんですが、各オプションボタンにSub OPValueStock()を登録しても、それで保存されるのはオプションボタンを押した状態での配列ですよね?押す前の状態は保存されないのでは?
まったく、押されていない、すべてオフの状態では、登録をしたところで、全部オフです。
しかし、もしも、すでに、押されている状態を取得するのでしたら、Sheet_Activate イベントやWorkbook_Open イベントで取ります。
もし、固定状態でしたら、最初から、配列で、どれか1つに、1を代入すればよいわけです。
後は、配列の中身を、ローカルウィンドウで確保されているかみてください。
On は、1として入っているはずです。
No.9
- 回答日時:
#7です。
>Private Sub SetOption(Idx As Integer, sw As Boolean)
>Sheet2.Shapes("Opt" & Idx).ControlFormat.Value = sw
>Private Sub SetOption(Idx As Integer, sw As Boolean)
ActiveSheet.Shapes("Opt" & Idx).ControlFormat.Value = sw
にしてください。ゴメン
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) [貼り付けオプション]とは? 3 2022/04/17 08:15
- Excel(エクセル) エクセルの編集オプション セル移動 2 2022/04/02 09:19
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Vba 電卓 一文字消すボタン 3 2022/05/04 13:40
- 教えて!goo アンドロイド用の教えて!gooアプリの戻るボタンを押すと、勝手に自動で教えて!gooアプリが終了して 2 2022/09/24 07:47
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- Windows 10 WINDOWS11 で WINDOWS UPDATE 詳細オプション その他の製品オンにできない 1 2022/06/10 09:34
- Windows 10 Windows10でセーフモードが出来ません。 2 2022/04/22 23:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでオプションが開けない
-
Google Mapで、都市高速は使わ...
-
オプションボタンの三択(アク...
-
Access2007で複数のチェックボ...
-
[Google カレンダー] 定期的な...
-
ACCESSのチェックボックスにお...
-
アウトルック2003の予定表...
-
激安携帯販売店の仕組みって・・
-
SQの日にちを教えて下さい!
-
日経225オプションの過去データ...
-
一日信用取引でストップ高(ス...
-
日経オプション
-
楽天証券 米国株 約定 受渡代金
-
反対売買を超解りやすく説明願...
-
信用取引の、現引きのできる時間帯
-
指値の「寄指」「引指」「不成...
-
追証って、保証金も没収されま...
-
出合注文について
-
成行き注文でも約定できない理由
-
建玉とは買・売の合計?それと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでオプションが開けない
-
Google Mapで、都市高速は使わ...
-
Access2007で複数のチェックボ...
-
「Excelのオプション」の「ユー...
-
[Google カレンダー] 定期的な...
-
エクセルVBAマクロのオプシ...
-
画像やオートシェイプの単位が...
-
エクセルVBA/フォームのオプシ...
-
[貼り付けオプション]とは?
-
日経225オプションの過去データ...
-
リブレオフィスの予測表示の停...
-
オプション取引がゼロサムゲー...
-
Word2010 文書外の背景色について
-
MSアウトルックのアラーム音を...
-
オプション コール
-
シャットダウンができない!!
-
CSSで、テキストボックスの文字...
-
AcsessでオプショングループをN...
-
SBI証券のオプション取引の約定...
-
エクセル2000 ファイルを開く...
おすすめ情報