重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルの、WorksheetChangeで、下記のコードを、使ってコマンドボタンの制御を、する場合に、関数で求められた結果値によって同じように、制御することは、できないでしょうか

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" And Target.Value = "あああ" Then

CommandButton1.Enabled = True

ElseIf Target.Address = "$A$1" And Target.Value = "いいい" Then

CommandButton1.Enabled = False

End If

End Sub

質問者からの補足コメント

  • 気に留めていただき感謝します。関数といっても、if関数で.合計が0なら0.それ以外なら、1としていて、1の場合にコマンドボタンを、有効化したいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2025/03/12 22:21
  • 実数ならば、コマンドのオンオフが、可能なのですが、セルの値が関数から求められる数値の場合には、残念ながら反応しません。

      補足日時:2025/03/13 21:05

A 回答 (3件)

>実数ならば、コマンドのオンオフが、可能なのですが、セルの値が関数から求められる数値の場合には、残念ながら反応しません。



関数で合計を求めている場合、合計値が変更になってもchangeイベントは発生しません。

合計値を設定しているのは具体的にどのセルでしょうか。
合計の対象になるセル範囲は具体的にどのようになっていますか。
合計の対象になるセル範囲に手で値が入力される前提です。
changeイベントは、合計の対象になるセル範囲に発生しますので、
そのイベントを取得します。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2025/03/15 16:16

>if関数で.合計が0なら0.それ以外なら、1としていて、1の場合にコマンドボタンを、有効化したいです。



合計のセルを仮にB1とすると、以下のようになります。
Range("B1")をあなたのほうで、適切なセルに変えてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Range("B1").Value <> 0 Then

CommandButton1.Enabled = True

ElseIf Target.Address = "$A$1" And Range("B1").Value = 0 Then

CommandButton1.Enabled = False

End If
End Sub
    • good
    • 0

>関数で求められた結果値によって同じように、制御することは、できないでしょうか



どのような関数をどのセルに適用しているのかがわからないと具体的な回答ができません。

どのような関数をどのセルに適用して、どのような戻り値に対して、
CommandButton1.EnabledをTrueもしくはFalseにしたいのかを提示すると良い回答が得られやすくなります。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A