[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ワークシートのChangeイベントについて』(ざがいも)
ワークシートのChangeイベントについて質問です。
特定のセルの値が変更された時にマクロを起動する
Worksheet_Changeのイベントは、関数で計算された値の変更には対応できないのでしょうか?
先日、こちらの掲示板にてご指南頂きました以下のコード、
Sub Worksheet_Change(ByVal Target As Range)
Dim iR As Long
Application.EnableEvents = False
If Target.Address = "$A$1" Then
iR = Application.Max(Range("A" & Rows.Count).End(xlUp).Row + 1, 3)
Range("A" & iR).Value = Target.Value
End If
Application.EnableEvents = True
End Sub
A1セルに文字が入力されるとA3セル以下の行にA1で入力された値をコピー
していくものなのですが、今回、A1のセルに次の関数を入れました。
=ABS(B1-B2)
B1とB2に入力された数字を引き算した絶対値がA1セルに反映されるのですが、
この場合だと、A1セルの数値が変化しても上記のマクロが実行されませんでした。
A1セルに値を直接入力するとマクロはきちんと実行されるので
関数を用いた値の変化には対応できないのでしょうか・・・?
宜しくお願い致します。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
どのタイミングでマクロを実行するのでしょうか。 B1 の値が変更されたとき? B2 の値が変更されたとき? B1 または B2 のどちらかが変更されたとき?
(tora) 2020/05/13(水) 11:16
それとも B1 または B2 にも関数が入っている?
(tora) 2020/05/13(水) 11:22
関数で計算されて"見た目"の数字が変わるのは、再計算の結果であって、
値(数式)が書き換えられたものではないからです。
すでに、toraさんが確認されてますが、どのような数式になってますか?
(もこな2 ) 2020/05/13(水) 11:46
その場合、たとえば、B1あるいはB2セルの値が"直接"変更されたときにchangeイベントを使いたいなら、こんな感じでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("B1:B2"),Target) Is Nothing Then Application.EnableEvents = False Cells(Application.Max(Range("A" & Rows.Count).End(xlUp).Row + 1, 3), "A").Value = Range("A1") Application.EnableEvents = True End If End Sub
(もこな2 ) 2020/05/13(水) 12:03
別案です。条件にそわないかもしれませんが、Calculateイベントを捉えたものです。
Private Sub Worksheet_Calculate() Dim iR As Long Static VAL_A1 If VAL_A1 <> Range("A1").Value Then VAL_A1 = Range("A1").Value iR = Application.Max(Range("A" & Rows.Count).End(xlUp).Row + 1, 3) Range("A" & iR).Value = VAL_A1 End If End Sub (助六) 2020/05/13(水) 13:20
もう一つ別案です。A1セルの参照先の変更を捉えたものです。
Private Sub Worksheet_Change(ByVal Target As Range) Dim iR As Long Application.EnableEvents = False If Not Intersect(Range("A1").Precedents, Target) Is Nothing Then iR = Application.Max(Range("A" & Rows.Count).End(xlUp).Row + 1, 3) Range("A" & iR).Value = Range("A1") End If Application.EnableEvents = True End Sub (助六) 2020/05/13(水) 13:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.