アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロを起動しないようにしたいです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" Then Call マクロ1
End Sub

上記のコードでマクロを起動出来るようになったのですが、

最初に指定のセル("$D$2")に1と入力するとマクロが起動します。
次にまた1と入力するともう1度マクロが起動します。

これを同じ値を入力した場合はマクロ起動はせず、

”空白状態から値が入力された場合” もしくは "入力された値が違う値に変更された場合” 

とするには、どう記述すれば良いでしょうか?

宜しくお願いします。

A 回答 (1件)

元の値をどこかに保存してそれと比較することになります。


今回はセルが1つだけなので、以下のようにパブリック変数に代入するのが良いと思いますが、多い場合は比較用のシートを作ることになると思います。

-----------------------------------------------------------------------
次を標準モジュールに(「Sub」…「End Sub」の外に記入)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Public 元値 As Variant
-----------------------------------------------------------------------

-----------------------------------------------------------------------
次を対象のシートモジュールに
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_Activate()
元値 = Range("D2").Value
End Sub
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = 元値 Then Exit Sub
元値 = Target.Value
If Target.Address = "$D$2" Then Call マクロ1
End Sub
-----------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございます。

教えて頂いた通りにしたら出来ました。

感謝です!

お礼日時:2016/11/22 09:40

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