質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

6246閲覧

Excelの特定のセルの値が変更されたらマクロを実行する方法について

cesolution

総合スコア217

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/05/25 01:44

前提・実現したいこと

Excelのあるセルの値が変わったら、特定のマクロを実行したいと考えています。
具体的には、D26のセルの値が変わったら、D27の値を別のシートにコピーするといった作業を数十回繰り返したいと考えています。
Web等を参照し、以下のコードで、D26の値が変わった際に、copyマクロが起動することは確認しました。

該当のソースコード

VBA

1Private Sub Worksheet_Change(ByVal Target As Range) 2 If Intersect(Target, Range("D26:D26")) Is Nothing Then 3 Exit Sub 4 Else 5 Call Module1.copy 6 End If 7End Sub

発生している問題・エラーメッセージ

ただ1点問題がございまして、D26の値を手動で書き換えれば上記のマクロは動作するのですが、実際にはD26にはExcelのアドイン関数が記載されており、D26の値が変わるのは「外部のソフトが計算を実行し、その値をExcelのアドイン関数で読み取った」タイミングになります。
このため、D26の見た目上の値自体は、外部ソフトの計算結果によって変わるのですが、D26に記載されいてう式自体は変わらないため、D26の見た目上の数値がいくら変わっても上記のworksheetマクロが起動しません。
外部ソフトが計算を実行したタイミングをVBA側で判断できれば良いのですが、それが難しく、「D26の見た目上の数値の変化」を判定して、マクロを作動させたいと考えています。
このようなことは可能でしょうか?
(例えばD26のセル自体の変化ではなく、D26のvalueの変化を元に動作するworksheet関数を設定するといった方法があると良いのですが、、、)
皆様のお知恵を拝借いたしたく、宜しくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Excel 2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

D26には値そのものではなく、数式で例えれば=Sheet2!A1のようなものが入っていると考えてよろしいでしょうか。
試してみましたが確かにChangeイベントは発生しませんね。
代わりにCalculateイベントは発生しました。
こちらで代用してみてはいかがでしょうか。
但し「どこのセルで発生」という情報はなく、あくまでもシートが再計算されたというイベントになります。
もしD26以外にも数式があり頻繁に発生するようですと負荷になるかもしれないので、D26の値を変数か何かに保持しておいて、変化があったらコピー処理を実行するなどの対策が必要かもしれません。

VBA

1Private Sub Worksheet_Calculate() 2 Static d26 3 If d26 <> Range("D26").Value Then 4 d26 = Range("D26").Value 5 Call Module1.copy 6 End If 7End Sub

投稿2018/05/25 02:08

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cesolution

2018/05/25 02:19

早速のご回答ありがとうございます。 再計算で動作させることもできたんですね! ご連絡いただいたマクロで表現できそうです。 非常に助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問