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

作業ブックのシートに
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("AL10")) Is Nothing Then
If Range("AL10").Value = "手続き必要" Then
Call 矢印9表示
End If
End If
End Sub
を設定しており、
指定セル値AL10に(手続き必要)と表示されたら、
マクロ Call 矢印9表示
が実行できるように設定しましたが、
AL10に(手続き必要)と表示されても
上手くマクロが実行できませんでした。
セルAL10には数式「=$AL$2&""&$AL$3&""&$AL$4&""&$AL$5&""&$AL$6&""&$AL$7&""&$AL$8&""&$AL$9」を設定しておりまして、この数式に表示された文字をセルAL10に表示させてます。
解決方法を教えてください。
よろしくお願いいたします。

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

  • うーん・・・

    回答ありがとうございます。
    コードの
    「Private Sub Worksheet_Change(ByVal Target As Range)」
    この部分に問題があるのでしょうか、
    解決はしましたが、
    同じような問題が出てきております、
    「Private Sub Worksheet_Change(ByVal Target As Range)」
    をどのように変更すればよろしいでしょうか?
    教えて頂けますか?
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/12/25 17:13
  • うーん・・・

    ご連絡ありがとうございます。
    具体的なコード等を教えていただくことは可能でしょうか?
    よろしくお願いいたします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/12/26 06:53

A 回答 (3件)

Valueとは内容そのものですので、数式の内容を返してしまします。


そこに表示している文字列を比較したいのあれば、
Range("AL10").Text
とすればできませんか?
    • good
    • 1
この回答へのお礼

回答ありがとうございました。
上手くできました。
感謝いたします。

お礼日時:2024/12/25 15:31

No2です。



>をどのように変更すればよろしいでしょうか?
>教えて頂けますか?
No2に記した通りです。

Changeイベントで取得したいのであれば、
該当セルの値を変更する原因となるセルのChangeを取得すれば良いでしょう。

Calculateイベントで行う方法も考えられます。
こちらの場合は、シート内で計算が発生すれば発火しますが、セルを特定できませんので、ターゲットとしているAL10の値をグローバル変数等に取得しておいて、その値と変わっているかどうかで判断するような方法になるでしょう。

ご提示の場合に限れば、関数式が単純なので、前者の方法の方が簡単だと思います。
(関数式の内容によっては、この方法では完全に判別できない場合もあり得ますが、ご提示の関数内容であれば直結しているので問題ないはずです)
この回答への補足あり
    • good
    • 0

こんにちは



>上手くできました。
解決したようなので、以下はどうでも良いことですけれど・・


数式が設定されているセルの値が計算によって変化しても、そのセルではChangeイベントは発生しないはずですので、そもそもChangeイベントでキャッチしようとしていることが、根本的な間違えのように思われます。

また、数式の計算結果の値であっても、セルのValue値で取得できるはずです。
この回答への補足あり
    • good
    • 0

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

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


おすすめ情報

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