[[20200326223325]] 『checkboxを使用して 条件』(kazu) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『checkboxを使用して 条件』(kazu)

エクセル VBAについての質問です
下記コードをしようして Textbox8に 写真ありと入っている場合のみ CheckBox1が表示されています このCheckBox1が表示されているときのみ コマンドボタン4を Enabled = Falseにしたいのですが CheckBox1が表示されていないときは 通常通りにするには どうしたらいいですか?
CheckBox1に チェックを入れた場合は Enabled = Trueです

Private Sub UserForm_Activate()

Dim W As String
W = Me.TextBox8
Select Case W
Case "写真あり"
Me.CheckBox1.Visible = True
Case ""
Me.CheckBox1.Visible = False
End Select

End Sub
ただし 下記コードにて実行しているものをいかしたいのですが

Private Sub ComboBox2_click()
Dim サンプル1 As String
サンプル1 = Me.TextBox1
Select Case サンプル1
Case "A"
Me.CommandButton1.Enabled = False
Me.CommandButton2.Enabled = False
Me.CommandButton3.Enabled = False
Me.CommandButton4.Enabled = True
End Select

Dim ダメージランク As String
Dim クリーニング As String

ダメージランク = Me.ComboBox2
クリーニング = Me.ComboBox3

Select Case ダメージランク
Case "○"
Me.CommandButton1.Enabled = False
Me.CommandButton2.Enabled = False
Select Case クリーニング
Case ""
Me.CommandButton3.Enabled = False
Me.CommandButton4.Enabled = True
Case "水", "S"
Me.CommandButton3.Enabled = True
Me.CommandButton4.Enabled = False
End Select

Case "×"
Me.CommandButton1.Enabled = True
Me.CommandButton2.Enabled = True
Me.CommandButton3.Enabled = False
Me.CommandButton4.Enabled = False
End Select
End Sub
優先順位としては CheckBox1が表示されているときは CommondButton4.Enabled = False チェックが 入った場合は 上記コードを実行
CheckBox1が表示されてない場合は 上記コードを実行

< 使用 Excel:Excel2016、使用 OS:Windows10 >


ダメだー日本語が解読出来ん。
コマンドボタン4のEnabled は、
最初の文では、
最優先はCheckBox1に チェックが入っている場合で True
次にCheckBox1が表示されている場合は False
CheckBox1のチェックが入っていない場合で表示されていない場合はComboBox2_clickによる

最後の文では、
最優先は CheckBox1が表示されている場合で False
CheckBox1が表示されていない場合はComboBox2_clickによる

と読めます。
再整理していただけないと回答できません。

(kazuo) 2020/03/27(金) 08:03


回答でなく、確認ですが↓の続きなんでしょうか?

[[20200326222916]] 『VBA 初心者です CommondButtonの』(じょーかー)

(もこな2) 2020/03/27(金) 09:46


分かりにくて申し訳ありません

その通りの認識で構いません

あと 続きとなります
(kazu) 2020/03/27(金) 11:54


>その通りの認識で構いません
結局どういうことなんでしょうか?
"再整理"して提示できませんか?

>あと 続きとなります
私見ですが、前提になるなら元のトピックでそのまま続けてもよかったかもです。
また、ニックネームは特に理由がない限り、変えないほうがいいですよ。

(もこな2) 2020/03/27(金) 12:27


まず ユーザーフォーム内のコマンドボタンが1〜4まであり 条件に合わせてボタンのenabledを変更しますこのときコマンドボタン2はコマンドボタン1が押されたことを確認できればenabledをTrueにへんこうしますコマンドボタンについてはユーザーフォーム2を開きます それを前提としてユーザーフォーム内に チェックボックスが 表示される場合 されない場合のコード書きました

チェックボックスが表示されない場合は ユーザーフォーム内 前提とした処理をそのまま行います

チェックボックスが表示されている場合は チェックボックスにチェックが入っていない場合は コマンドボタン2を コマンドボタン1が押されてもenabled falseの状態を維持 チェックが入ったら コマンドボタン1を押したら コマンドボタン2が enabled Trueになるようにしたいです

最初の説明とは 少し変更になりました
(kazu) 2020/03/27(金) 16:29


私の読解力がないようで、いまいちピンとこないままですが、コマンドボタンを押していたかどうかで動作がかわるように思います。

とりえず、コマンドボタンだと、押したかどうかを保持するのが面倒なので、トグルボタンに変えてみてはどうでしょうか?

(もこな2) 2020/03/27(金) 17:31


何故一行にずらずら書くのでしょう。
コードを書くように箇条書きすれば、そのままコードに直すだけです。

コマンドボタン2のenabled は
チェックボックスが表示されている場合で、

	チェックボックスにチェックが入っていない場合はfalse	
	チェックボックスにチェックが入っている場合で	
		コマンドボタン1が押されたら True
チェックボックスが表示されていない場合は		
	そのほかのコードによる	
でよければ、
一例です。

Private Sub UserForm_Activate()

    Me.コマンドボタン2.Enabled = False
    Me.チェックボックス.Value = False
    If Me.TextBox8.Text = "写真あり" Then
        Me.チェックボックス.Visible = True
    Else
        Me.チェックボックス.Visible = False
    End If
End Sub

Private Sub UserForm_Click()

    Select Case Me.TextBox1.Text
    Case "A"
        Me.コマンドボタン1.Enabled = False
        Me.コマンドボタン2.Enabled = False      'その他のコードだが、Falseにする場合は他の判定不要
        Me.コマンドボタン3.Enabled = False
        Me.コマンドボタン4.Enabled = True
    Case "B"
        Me.コマンドボタン1.Enabled = True
        If Not Me.チェックボックス.Visible Then _
            Me.コマンドボタン2.Enabled = True   'その他のコード、Trueにする場合は優先上位の判定が必要
        Me.コマンドボタン3.Enabled = True
        Me.コマンドボタン4.Enabled = True
    End Select
End Sub

Private Sub コマンドボタン1_Click()

    If Me.チェックボックス.Visible Then
        If Me.チェックボックス.Value Then Me.コマンドボタン2.Enabled = True
    Else
'        Me.コマンドボタン2.Enabled = false      'その他のコードだが、Falseにする場合は他の判定不要
    End If
End Sub

Private Sub チェックボックス_Change()

    If Me.チェックボックス.Value = False Then Me.コマンドボタン2.Enabled = False
End Sub

(kazuo) 2020/03/27(金) 23:14


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.