Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7775 / 13645 ツリー ←次へ | 前へ→

【36845】オプションボタンをクリックしないと登録ボタンに無効する方法は? saru@ 06/4/15(土) 11:46 質問[未読]
【36847】Re:オプションボタンをクリックしないと登... ぱっせんじゃー 06/4/15(土) 12:50 発言[未読]
【36848】Re:オプションボタンをクリックしないと登... ぱっせんじゃー 06/4/15(土) 12:52 発言[未読]
【36849】Re:オプションボタンをクリックしないと登... だるま 06/4/15(土) 12:58 回答[未読]
【36859】Re:オプションボタンをクリックしないと登... saru@ 06/4/16(日) 22:54 質問[未読]
【36860】Re:オプションボタンをクリックしないと... neptune 06/4/16(日) 23:30 回答[未読]
【36862】Re:オプションボタンをクリックしないと... saru@ 06/4/16(日) 23:53 質問[未読]
【36866】Re:オプションボタンをクリックしないと... だるま 06/4/17(月) 9:31 回答[未読]
【36901】Re:オプションボタンをクリックしないと... saru@ 06/4/17(月) 20:02 質問[未読]
【36904】Re:オプションボタンをクリックしないと... neptune 06/4/17(月) 21:15 回答[未読]
【36915】Re:オプションボタンをクリックしないと... saru@ 06/4/18(火) 0:10 質問[未読]
【36925】Re:オプションボタンをクリックしないと... neptune 06/4/18(火) 13:02 回答[未読]
【36946】Re:オプションボタンをクリックしないと... saru@ 06/4/18(火) 19:28 お礼[未読]
【36950】Re:オプションボタンをクリックしないと... neptune 06/4/18(火) 22:02 回答[未読]

【36845】オプションボタンをクリックしないと登録...
質問  saru@ E-MAIL  - 06/4/15(土) 11:46 -

引用なし
パスワード
   三つのオプションボタンをいずれにチェックしないて登録ボタンを実行すると
オーバーブローになってしまう。
いずれのオプションボタンをチェックしてから登録ボタン実行したいです。
オプションボタンを押すまで登録ボタンが無効します。

このような参考がありましたら教えていただけませんか?

よろしくお願いします。

【36847】Re:オプションボタンをクリックしないと...
発言  ぱっせんじゃー  - 06/4/15(土) 12:50 -

引用なし
パスワード
   オプションボタンのいずれかがTrueになると
登録ボタンが
Visible = True
になるようにしてみてはいかがでしょう?

【36848】Re:オプションボタンをクリックしないと...
発言  ぱっせんじゃー  - 06/4/15(土) 12:52 -

引用なし
パスワード
   あるいは
オプションボタンをループで回して
いずれかがTrueだったらフラグを立て、
フラグが立ってないとコマンドボタンを
押しても
Msgboxを表示して警告を出すようにする、
でもいいですね。

【36849】Re:オプションボタンをクリックしないと...
回答  だるま WEB  - 06/4/15(土) 12:58 -

引用なし
パスワード
   こんな感じでしょうか。^d^

Private Sub OptionButton1_Click()
  EnterEnable
End Sub

Private Sub OptionButton2_Click()
  EnterEnable
End Sub

Private Sub OptionButton3_Click()
  EnterEnable
End Sub

Private Sub UserForm_Initialize()
  Me.CommandButton1.Enabled = False
End Sub

Private Sub EnterEnable()
  Me.CommandButton1.Enabled = True
End Sub

【36859】Re:オプションボタンをクリックしないと...
質問  saru@ E-MAIL  - 06/4/16(日) 22:54 -

引用なし
パスワード
   だるまさんありがとうございます。
申し訳はありませんが説明不足ですみませんでした。

ユーザーフォームの中で
オプションボタン3つ
登録ボタン4つ
に入ってます。
つまりいずれのオプション3つにチェックしないと登録ボタン4つ作動しません。

opt1=オプションボタン1です。

sub 登録ボタン(1)
登録ボタン(1)= False
if opt1 = True Then 登録ボタン(1) = True
if opt2 = False Then 登録ボタン(1) = True
if opt3 = False Then 登録ボタン(1) = True
以下コード作動します。

このようにコード実行しましたがだめでした。

何か他の方法がありましたら教えてください。よろしくお願いします。

【36860】Re:オプションボタンをクリックしないと...
回答  neptune  - 06/4/16(日) 23:30 -

引用なし
パスワード
   ▼saru@ さん:
>sub 登録ボタン(1)
> 登録ボタン(1)= False
>if opt1 = True Then 登録ボタン(1) = True
>if opt2 = False Then 登録ボタン(1) = True
>if opt3 = False Then 登録ボタン(1) = True
>以下コード作動します。
ほんとにこれで作動します?
何を書いているか理解してかいてますか?
E先ず、xcelのVBEのオプションから「宣言を強制する」にチェックを入れる
ことから始めることをお勧めします。

ざっとでも、Helpででもいいですから、基本的な文法について
目を通してから、ソースを書くことをお勧めします。

薄情なようですが、↑の概要を理解せずにはソースは書けません。

【36862】Re:オプションボタンをクリックしないと...
質問  saru@ E-MAIL  - 06/4/16(日) 23:53 -

引用なし
パスワード
   neptune さんありがとうございます。
では、今まで作ったコードを出します。見てわかると思いますが
よろしくお願いします。

Private Sub cmdNo_Click()    '登録ボタン1
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がない)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.1 - &P"
    .Zoom = 80 
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(1)   '全体データ
    Case 2:
      Call 顧客別ランク集計(1)  '顧客指定
    Case 3:
      Call 課別ランク集計(1)   '顧客と支部指定
  End Select
End Sub


Private Sub cmdIyes_Click()   '登録ボタン2
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.2 - &P"
    .Zoom = 80    
  End With
   Select Case rankmode
    Case 1:
      Call 全体ランク集計(2)   '全体データ
    Case 2:
      Call 顧客別ランク集計(2)  '顧客指定
    Case 3:
      Call 課別ランク集計(2)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdHyes_Click()   '登録ボタン3
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.3 - &P"
    .Zoom = 80
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(3)   '全体データ
    Case 2:
      Call 顧客別ランク集計(3)  '顧客指定
    Case 3:
      Call 課別ランク集計(3)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdIHYes_Click()    '登録ボタン4
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.4 - &P"
    .Zoom = 80
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(4)   '全体データ
    Case 2:
      Call 顧客別ランク集計(4)  '顧客指定
    Case 3:
      Call 課別ランク集計(4)   '顧客と支部指定
  End Select
End Sub


Private Sub Opt1_Click()  ’オプションボタン1
  
  Opt1.Value = True
  Opt2.Value = False
  Opt3.Value = False
  printmenu = 1
End Sub

Private Sub Opt2_Click()  ’オプションボタン2

  Opt1.Value = False
  Opt2.Value = True
  Opt3.Value = False
  printmenu = 2
End Sub

Private Sub Opt3_Click()  ’オプションボタン3

  Opt1.Value = False
  Opt2.Value = False
  Opt3.Value = True
  printmenu = 3
End Sub

でオプションボタンをチェックするまでに4つ登録ボタンが無効化します。
どこで記入すればよろしいですか?
よろしくお願いします。

【36866】Re:オプションボタンをクリックしないと...
回答  だるま WEB  - 06/4/17(月) 9:31 -

引用なし
パスワード
   順番を変え、あらためて注釈を加えておきます。
意味を理解していただき、ご自身のプログラムに反映させてください。^d^

'フォーム起動時に登録ボタンを押せないようにしておきます。
Private Sub UserForm_Initialize()
  Me.CommandButton1.Enabled = False
End Sub

'オプションボタン1が選択されたら
Private Sub OptionButton1_Click()
  EnterEnable
End Sub

'オプションボタン2が選択されたら
Private Sub OptionButton2_Click()
  EnterEnable
End Sub

'オプションボタン3が選択されたら
Private Sub OptionButton3_Click()
  EnterEnable
End Sub

'登録ボタンが押せるようにします。
Private Sub EnterEnable()
  Me.CommandButton1.Enabled = True
End Sub

【36901】Re:オプションボタンをクリックしないと...
質問  saru@ E-MAIL  - 06/4/17(月) 20:02 -

引用なし
パスワード
   だるま さんありがとうございます。

参考してコードを変更してみましたが無効化しなかったです。
何処がおかしいところがありますか?
よろしくお願いします。

Private Sub frmYearRank_Initialize() 'ユーザーフォーム
  Me.cmdNo.EnableEvents = False
  Me.cmdIyes.EnableEvents = False
  Me.cmdHyes.EnableEvents = False
  Me.cmdIHYes.EnableEvents = False
End Sub

Private Sub cmdNo_Click()    '登録ボタン1

  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がない)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.1 - &P"
    .Zoom = 85
  End With
  
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(1)   '全体データ
    Case 2:
      Call 顧客別ランク集計(1)  '顧客指定
    Case 3:
      Call 課別ランク集計(1)   '顧客と支部指定
  End Select
End Sub


Private Sub cmdIyes_Click()   '登録ボタン2
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.2 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(2)   '全体データ
    Case 2:
      Call 顧客別ランク集計(2)  '顧客指定
    Case 3:
      Call 課別ランク集計(2)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdHyes_Click()   '登録ボタン3
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.3 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(3)   '全体データ
    Case 2:
      Call 顧客別ランク集計(3)  '顧客指定
    Case 3:
      Call 課別ランク集計(3)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdIHYes_Click()    '登録ボタン4
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.4 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(4)   '全体データ
    Case 2:
      Call 顧客別ランク集計(4)  '顧客指定
    Case 3:
      Call 課別ランク集計(4)   '顧客と支部指定
  End Select
End Sub

Private Sub Opt1_Click()    'オプションボタン1
  EnterEnabled
  Opt1.Value = True
  Opt2.Value = False
  Opt3.Value = False
  printmenu = 1
End Sub

Private Sub Opt2_Click()     'オプションボタン2
  EnterEnabled
  Opt1.Value = False
  Opt2.Value = True
  Opt3.Value = False
  printmenu = 2
End Sub

Private Sub Opt3_Click()     'オプションボタン3
  EnterEnabled
  Opt1.Value = False
  Opt2.Value = False
  Opt3.Value = True
  printmenu = 3
End Sub

【36904】Re:オプションボタンをクリックしないと...
回答  neptune  - 06/4/17(月) 21:15 -

引用なし
パスワード
   >オプションボタン3つ
のいずれかをTrueにしないとCommandButtonを使えないようにする
んですよね。

>参考してコードを変更してみましたが無効化しなかったです。
>何処がおかしいところがありますか?
はい、その指示をしてないからです。
EnableEvents というプロパティは CommandButtonにはありません。

VBEのインテリジェンス機能を有効利用しましょう。
Helpを有効利用しましょう。
VB(A)の基本部分を理解しましょう。
だるまさんのアドバイスをキチンと理解しましょう。

EnterEnabled プロシージャはキチンと書いているのでしょうか?

【36915】Re:オプションボタンをクリックしないと...
質問  saru@ E-MAIL  - 06/4/18(火) 0:10 -

引用なし
パスワード
   ▼neptune さんありがとうございます。
>オプションボタン3つ
>のいずれかをTrueにしないとCommandButtonを使えないようにする
>んですよね。  
>>はい、そうです。

間違えて記入したそうですがもう一度変更したらコマンドボタンが無効しなかった
そうです。

正しいコードなのに無効化を出来なかった。

Private Sub frmYearRank_Initialize()
Me.cmdNo.Enabled = False
Me.cmdIyes.Enabled = False
Me.cmdHyes.Enabled = False
Me.cmdIHYes.Enabled = False
End Sub

Private Sub cmdNo_Click()    '因子・反応なし
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がない)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.1 - &P"
    .Zoom = 85
  End With
  
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(1)   '全体データ
    Case 2:
      Call 顧客別ランク集計(1)  '顧客指定
    Case 3:
      Call 課別ランク集計(1)   '顧客と支部指定
  End Select
End Sub


Private Sub cmdIyes_Click()   '因子あり
  Me.Hide   
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.2 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(2)   '全体データ
    Case 2:
      Call 顧客別ランク集計(2)  '顧客指定
    Case 3:
      Call 課別ランク集計(2)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdHyes_Click()   '反応あり
  Me.Hide    
  Worksheets("ランク分け集計表").Range("E3").Value = "(反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.3 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(3)   '全体データ
    Case 2:
      Call 顧客別ランク集計(3)  '顧客指定
    Case 3:
      Call 課別ランク集計(3)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdIHYes_Click()    '因子・反応あり
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.4 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(4)   '全体データ
    Case 2:
      Call 顧客別ランク集計(4)  '顧客指定
    Case 3:
      Call 課別ランク集計(4)   '顧客と支部指定
  End Select
End Sub

Private Sub Opt1_Click()
  Opt1.Value = True
  Opt2.Value = False
  Opt3.Value = False
  printmenu = 1
  EnterEnable
End Sub

Private Sub Opt2_Click()
  Opt1.Value = False
  Opt2.Value = True
  Opt3.Value = False
  printmenu = 2
  EnterEnable
End Sub

Private Sub Opt3_Click()  
  Opt1.Value = False
  Opt2.Value = False
  Opt3.Value = True
  printmenu = 3
  EnterEnable
End Sub

Private Sub EnterEnable()
Me.cmdNo.Enabled = True
Me.cmdIyes.Enabled = True
Me.cmdHyes.Enabled = True
Me.cmdIHYes.Enabled = True

End Sub

【36925】Re:オプションボタンをクリックしないと...
回答  neptune  - 06/4/18(火) 13:02 -

引用なし
パスワード
   >間違えて記入したそうですがもう一度変更したらコマンドボタンが無効しなかった
>そうです。
自分の質問ではないのですか?

>正しいコードなのに無効化を出来なかった。
一番最初に表示させた時は、Enable=Falseになっているはずですけど。
UPされたソースを見て判断する限りはそうです。

1番最初以外なら、恐らく正しい文法だが、ロジックが悪く
「正しいコードなのに無効化を出来なかった。」のだと思います。
これをいわゆるバグと言います。

さて害虫の駆除ですが、
cmdNoなどのコマンドボタンのEnableの状態をいろんなポイントで確認しましたか?
debug.print cmdNo.enable
などを使います。

詳しい条件、全てのソースがわからないので全くの勘ですが、
me.hideとやってますね。
次に表示はさせないのですか?
1番最初にFormを表示させた後、コマンドボタンを押した後、再表示させても
コマンドボタンはEnable=trueですよ。

ついでに、オプションボタンですが、Frameに載せておくと、
各オプションボタンの記述
  Opt1.Value = False
  Opt2.Value = True
  Opt3.Value = False
は不要ですね。(載せなくてもUserFormに3つだけなら不要なはずですが?)

【36946】Re:オプションボタンをクリックしないと...
お礼  saru@ E-MAIL  - 06/4/18(火) 19:28 -

引用なし
パスワード
   neptune さんお世話になって本当にありがとうございます。
だるまさん、ぱっせんじゃーさんヒントいただいてありがとうございます。
成功いたしましたので本当に助かりました。

いろいろやってみたがだめでした。
フォーム起動時に登録ボタンを押せないようにプロシージャはだめでした。
作動できなかった。原因はわかりませんでした。
'Private Sub frmYearRank_Initialize()
  ' Me.cmdNo.Enabled = False
  ' Me.cmdIyes.Enabled = False
  ' Me.cmdHyes.Enabled = False
  ' Me.cmdIHYes.Enabled = False
'End Sub

下記の方法でやってみましたら成功いたしました。
登録ボタンクリック実行で
オプションボタンクリックしてるかと調べて
クリックしていないと登録ボタン無効化します。
オプションボタンクリックしたら登録ボタン有効化します。
と方法を変えてみましたが作動できました。
無駄なところがありましたらご指導お願いします。


Private Sub cmdNo_Click()    '登録ボタン1
  If Opt1 = False Then
  If Opt2 = False Then
  If Opt3 = False Then
  MsgBox "オプションボタンをチェックしてください"
  Me.cmdNo.Enabled = False
  Me.cmdIyes.Enabled = False
  Me.cmdHyes.Enabled = False
  Me.cmdIHYes.Enabled = False
  Exit Sub
  End If
  End If
  End If
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がない)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.1 - &P"
    .Zoom = 85
  End With
  
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(1)   '全体データ
    Case 2:
      Call 顧客別ランク集計(1)  '顧客指定
    Case 3:
      Call 課別ランク集計(1)   '顧客と支部指定
  End Select
End Sub


Private Sub cmdIyes_Click()   '登録ボタン2
  If Opt1 = False Then
  If Opt2 = False Then
  If Opt3 = False Then
  MsgBox "オプションボタンをチェックしてください"
  Me.cmdNo.Enabled = False
  Me.cmdIyes.Enabled = False
  Me.cmdHyes.Enabled = False
  Me.cmdIHYes.Enabled = False
  Exit Sub
  End If
  End If
  End If
 
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.2 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(2)   '全体データ
    Case 2:
      Call 顧客別ランク集計(2)  '顧客指定
    Case 3:
      Call 課別ランク集計(2)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdHyes_Click()   '登録ボタン3
  If Opt1 = False Then
  If Opt2 = False Then
  If Opt3 = False Then
  MsgBox "オプションボタンをチェックしてください"
  Me.cmdNo.Enabled = False
  Me.cmdIyes.Enabled = False
  Me.cmdHyes.Enabled = False
  Me.cmdIHYes.Enabled = False
  Exit Sub
  End If
  End If
  End If
 
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.3 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(3)   '全体データ
    Case 2:
      Call 顧客別ランク集計(3)  '顧客指定
    Case 3:
      Call 課別ランク集計(3)   '顧客と支部指定
  End Select
End Sub

Private Sub cmdIHYes_Click()    '登録ボタン4
  If Opt1 = False Then
  If Opt2 = False Then
  If Opt3 = False Then
  MsgBox "オプションボタンをチェックしてください"
  Me.cmdNo.Enabled = False
  Me.cmdIyes.Enabled = False
  Me.cmdHyes.Enabled = False
  Me.cmdIHYes.Enabled = False
  Exit Sub
  End If
  End If
  End If
 
  Me.Hide
  Worksheets("ランク分け集計表").Range("E3").Value = "(因子・反応がある)"
  With Worksheets("ランク分け集計表").PageSetup
    .RightHeader = "&""MS Pゴシック,太字""&16No.4 - &P"
    .Zoom = 85
  End With
  Select Case rankmode
    Case 1:
      Call 全体ランク集計(4)   '全体データ
    Case 2:
      Call 顧客別ランク集計(4)  '顧客指定
    Case 3:
      Call 課別ランク集計(4)   '顧客と支部指定
  End Select
End Sub

Private Sub Opt1_Click()   ’オプション1
  EnterEnable
  If Opt1 = True Then
  printmenu = 1
   End If
  
End Sub

Private Sub Opt2_Click()   ’オプション2
  EnterEnable 
  If Opt2 = True Then
  printmenu = 2
   End If
End Sub

Private Sub Opt3_Click()   ’オプション3
  EnterEnable
  If Opt3 = True Then
  printmenu = 3
  End If
End Sub

Private Sub EnterEnable()
Me.cmdNo.Enabled = True
Me.cmdIyes.Enabled = True
Me.cmdHyes.Enabled = True
Me.cmdIHYes.Enabled = True

End Sub

【36950】Re:オプションボタンをクリックしないと...
回答  neptune  - 06/4/18(火) 22:02 -

引用なし
パスワード
   ▼saru@ さん:

>作動できなかった。原因はわかりませんでした。
UPされた部分のみでは私にもわかりません。
Me.Hideが引っかかっていますけど。

>と方法を変えてみましたが作動できました。
>無駄なところがありましたらご指導お願いします。
インデントはもう少しわかり易く付けた方がいいですね。

OptionButtonとCommandButtonの操作のみを書いてみました。
動作は、最初の質問を参考にしてます。
新規UserFormにOptionButton3個、CommandButton3個
を配置してください。

自分のものと比べて、原因を探ってみて下さい。
で、なければなんかスッキリしませんから。

原因がわかれば教えてください。スッキリしたいから。

Option Explicit

Private Sub UserForm_Initialize()
  Call ButtonOperate(False)
End Sub

Private Sub OptionButton1_Click()
  Call ButtonOperate(True)
  '処理
End Sub

Private Sub OptionButton2_Click()
  Call ButtonOperate(True)
  '処理
End Sub

Private Sub OptionButton3_Click()
  Call ButtonOperate(True)
  '処理
End Sub

Private Sub CommandButton1_Click()
  If OpCheck = False Then Exit Sub
  '処理
End Sub
Private Sub CommandButton2_Click()
  If OpCheck = False Then Exit Sub
  '処理
End Sub

Private Sub CommandButton3_Click()
  If OpCheck = False Then Exit Sub
  '処理
End Sub
Private Function OpCheck() As Boolean
  If GetOpNum = -1 Then
    Call ButtonOperate(False)
    OpCheck = False
  Else
    OpCheck = True
  End If
End Function

Private Function GetOpNum() As Long
  With Me
    If .OptionButton1.Value = True Then
      GetOpNum = 0
    ElseIf .OptionButton2.Value = True Then
      GetOpNum = 1
    ElseIf .OptionButton3.Value = True Then
      GetOpNum = 2
    Else
      GetOpNum = -1
    End If
  End With
End Function

Private Sub ButtonOperate(pFlg As Boolean)
  With Me
    .CommandButton1.Enabled = pFlg
    .CommandButton2.Enabled = pFlg
    .CommandButton3.Enabled = pFlg
  End With
End Sub

7775 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free