
超初心者です。
セルの値が変化したときにマクロが実行されるようなものを作りたいです。
セルに入力されているのは、”関数”です。
なので、関数の”戻り値”が変化したときにマクロを実行したいのです。
今は、戻り値が変化しても式自体が変わっていないため
マクロが実行されません。
(セルの式を切り取ってもう一度貼りなおせば、マクロは実行される)
ちなみに今は
Private Sub Worksheet_Change(ByVal Target As Range)
で書いています。
まずVBAの勉強をしろと言われてしまいそうですが><;
何卒アドバイスのほどよろしくお願いいたします!
No.2ベストアンサー
- 回答日時:
セルの数式が計算された時に実行されるイベントプロシージャとして
Worksheet_Calculate イベントがあります。
これを活用されると良いでしょう。
監視対象セル以外のセル範囲に数式が設定されていると、その再計算時にもイベントが発生しますので
別に作業用シートを用意したほうが無難。
例えば Sheet1 の X10 セルの関数の戻り値を監視したい場合。
1)新規シートを追加して、監視用シートとする。
2)追加した監視用シートの A1 セルに 数式で =Sheet1!X10 ..などのように監視対象のセルを参照。
3)監視用シートのシートモジュールに以下のプロシージャを置く。
Private Sub Worksheet_Calculate()
If Range("A1").Value <> Range("B1").Value Then
Range("B1").Value = Range("A1").Value
MsgBox "change"
End If
End Sub
基本的に、Sheet1 の X10 セルの数式が計算されて値が変化した時にCalculateイベントが発生しますが、
数式の内容によっては、値が変わらなくてもCalculateイベントが発生するケースもあります。
また、Sheet1の行削除や挿入時などでもCalculateイベントは反応します。
なので前回計算時の値を別セルに記憶させておいて、値を比較する必要があります。
前述の例では、A1に参照数式があるとして、B1セルを記憶用セルとして使うようにしています。
ご回答いただきありがとうございます。
Worksheet_Calculate イベントですか!
最近イベントプロシージャについて勉強をはじめたばかりで
calculateイベントについて知りませんでした。
ためしたところ、ばっちりです!できました^^
要領を得ない質問にも関わらず、丁寧なご回答を
ありがとうございました。
大変勉強になりました。
No.3
- 回答日時:
こんばんは。
>関数の”戻り値”が変化したときにマクロを実行したいのです。
何がイベントの信号となるのか、書かれていませんので、私も#1さんと同様、はっきりとこれが良いとは言えません。
>Private Sub Worksheet_Change(ByVal Target As Range)
このイベントは、入力のEnter キーに対して反応するものです。
#2さんとは重複しますが、
Private Sub Worksheet_Calculate()
は、まさしく、Calculate の信号が発せられた時です。
リアルタイムスプレッドシート(RSS)は、この範疇に入ります。Calculateイベントは、私の記憶では、=Now()関数を、同じシートのどこかに置いておくと、値の変化に対してイベントが発生します。これは、OnDataイベントの代わりの役目があります。
OnDataイベントとは、DDEやOLEが入ってくるのを監視する役目を持っています。
'ローカルモジュールに入れる
Worksheets("Sheet1").OnData = "ValidateData" '←反応するマクロ名を入れます。
もう少し、詳しいお話があると、直接の回答に結びつくはずです。
ご回答いただきありがとうございます。
リアルタイムスプレッドシート…
はじめて聞きました。
なにぶん初心者なもので、かなり難しいですが
今からいろいろ調べてみたいと思います。
大変勉強になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Calculateイベントでセルを指定したい
Word(ワード)
-
Private Sub Worksheet_Calculate()のことでお聞きします
Excel(エクセル)
-
他のシートの特定のセルが変わると、自動実行されるマクロについて
Excel(エクセル)
-
-
4
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
5
【Excel VBA】セルの値が変更されたらマクロを実行
その他(Microsoft Office)
-
6
VBA Private Sub Worksheet_Calculate()
Access(アクセス)
-
7
エクセルのマクロをセルの値に応じて自動起動したい
Visual Basic(VBA)
-
8
セルの値が変ると自動でマクロが実行される。
その他(Microsoft Office)
-
9
Worksheet.Change イベントを他のシートにも反映させる方法?
Visual Basic(VBA)
-
10
エクセル マクロの実行について
Excel(エクセル)
-
11
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
12
EXCELでセルの値が変化したときだけにマクロ実行
Excel(エクセル)
-
13
IF関数を使ってマクロを実行させるには?
Excel(エクセル)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
16
エクセル Worksheet_Calculate
Visual Basic(VBA)
-
17
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
18
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
19
EXCEL あるセルに数字が入力されれば既存マクロ実行させたい
Excel(エクセル)
-
20
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”戻り値”が変化したときに、マ...
-
VBA実行後に元のセルに戻りたい
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excel VBAで、 ヘッダーへのセ...
-
Excelのハイパーリンクにマクロ...
-
Google Apps Script:Googleスプ...
-
screenupdatingが機能しなくて...
-
DataGridViewで右寄せ左寄せが...
-
Book1のセルへ別Book(Book2)...
-
エクセルの参照先セルの選択に...
-
VBA ユーザーフォーム ボタンク...
-
エクセルVBAでできるでしょ...
-
Excelで指定した日付から過去の...
-
3桁または4桁の数値を時刻に...
-
EXCELで変数をペーストしたい
-
VB.NETで DataRow()を利用して...
-
VBAでActiveDirectoryのユーザ...
-
VBA B列にある前から10文字の...
-
リストビューに条件による表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報