• ベストアンサー

セルにデータが入ったらマクロを自動的に実行

セルA1にデータが格納されたら自動的にメッセージボックスで表示するというマクロを作りたいんですが、データは定期的に入ってくるわけではないのでセルA1を常時監視させたいのです。 Worksheet_Changeイベント使用でセルA1に手打ちで入力すればできるのですが、入ってくるデータは手打ちでは無いのでマクロが動いてくれません。何は方法はありませんでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kouji_124
  • ベストアンサー率46% (283/605)
回答No.1

Excel2000でWorksheet_Changeイベントを使い、以下の様にしましたが問題なく動作していますが。。。 Sheet1 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then If Target.Value <> "" Then MsgBox "データが変化しました" End If End If End Sub 標準のモジュール:Module1 Sub Macro1() Range("A1").Value = "aaa" End Sub 手打ちではなく、マクロ「Macro1」を使ってSheet1のA1にデータを入力させた状態でも確実にWorksheet_Changeイベントは発生しています。 質問者様のコードがわかれば問題点がわかるかと思います。

yu-nagi910
質問者

お礼

うまくいきました。 基本がなってなかったみたいです。どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロの自動実行について

    マクロの自動実行についてお伺いします。 今、エクセルに一定のデータを貼り付けたら、(例えばナンバーを元に)自動的にソートされるマクロを作ろうとしてます。 以下流れになります。 **************************** 以下貼り付け(エクセル以外からの元データ) (プログラムの詳細は分かりませんが、エクセルなどにコピペできるものらしいです。) 1|Aさん 3|Bさん 2|Cさん ~ N|XXさん ↑をエクセルをシートに貼り付けしたら、別シートにソートされて 1|Aさん 2|Cさん 3|Bさん ~ N|XXさん という表が出来上がる。 **************************** 自動実行だとworksheet_changeというイベントがあるようですが、特定の範囲なりセルなりが指定されてる場合にいきる処理のように見えます。 そんなに広範囲ではないことは予想できますが、はっきりとしたデータの範囲も量も分からない場合、ループで範囲を覚え、それをソートするのがいいのでしょうか。 ちょっと質問が曖昧な気もしますが、アドバイスお願いします。

  • セルの値が変ると自動でマクロが実行される。

    セルの値が変ると自動でマクロが実行されるVBAを教えて下さいm(_ _ )m 例えば、シート1のA1の値が変ると、マクロAが実行される。 シート1のA2の値が変ると、マクロBが実行される。 と一つのシート内に複数のイベントを設置したのですが、イマイチわかりません。 知恵をお貸し下さい。

  • マクロの自動実行

    Private Sub Worksheet_Calculate() Range("b1").Value = Range("b1").Value + Range("a1").Value End Sub このマクロをA1セルの数値が変わるたびに自動で実行するには どうすればいいでしょうか?

  • EXCL のマクロ自動実行(イベントによる)についてお教えください。

    EXCL のマクロ自動実行(イベントによる)についてお教えください。 エクセルのあるセル(たとえばA1セル)に入力するとマクロが自動実行する方法をお教えください。 よろしくお願いいたします。

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • 空白セルのメッセージボックスでの知らせるマクロ

    はじめまして。下記のExcelについて教えてください。 セルA1からA10の間にデータが入力されているセル、入力されていないセルが混在している場合、データが入力されていないセルをメッセージボックスで知らせるマクロの作成の仕方を教えてください。 空白セルが2つある場合はメッセージボックスは2回表示されます。 ずっと考えていても、分からなくて。。。どうか教えてください。

  • マクロの自動実行などについて

    エクセル2003のVBAマクロについて質問です あるワークシートに値が入力されたら、マクロを自動実行するように出来ないでしょうか? 又、そのセルの値を別のセルにコピーしたいのですが、データを入力する度にセルの場所が ひとつ下へずれます。この最終列のセルの値を必ず拾うようにするにはどうすればよいでしょうか? ややこしくてすいません

  • セルのデータをマクロで置換するには?

    よろしくお願いします。エクセル2010でマクロを勉強しています。 日本語で表現している部分をマクロではどう書いたらいいのでしょうか ネットで調べたらreplaceStrを使うようですが、ここから前に進めません どなたか教えてください 単に式で書いてもいいようですが、式で書くと、リンクするソフト側でエラーになるので マクロで書く必要があります 例としてセルM7には =RSS|'3000.t'!更新済 という式が書いてあります  Private Sub Worksheet_Change(ByVal Target As Range) 'セルB7に数値が入力されたら     'セルM7の数値をB7の数値で置き換える    '数値は常に4桁です End Sub 以上です。よろしくお願いします

  • エクセルでセルに文字が入力されたらマクロを実行

    前回どなたかが質問されて回答を見せてもらったら私のやりたいことと同じだったので実行してみましたが出来なかったのでもう一度質問をさせてください。 1.実行したのですが、なにも実行されません。 2.実行したらメッセジBOXだけは実行するのですが、後のコマンドが実行されずにエラーになります。 もう一度詳しく教えてください。 マクロ初心者ですよろしくお願いします。 1.【シートモジュールで条件判定し、マクロを起動する】 通常はこちらの方法が使われます。 Private Sub Worksheet_Change(ByVal Target As Range)   '変化のあったセルがA1セルか?   If Target.Address = "$A$1" Then      '条件判定:A1セルの値は 1 か?     If Target.Value = 1 Then       MsgBox "A1セルは条件を満たしました"     End If   End If End Sub 2.【ワークシート上で条件判定し、マクロを起動する】 処理内容にもよっては不向きな場合もありますが、こんな方法も あります。 マクロを Sub ではなく、Function 、、つまり関数にしてしまいます。 Function TestMacro() '<-- Sub を Function に替える   MsgBox "A1セルは条件を満たしました"   TestMacro = "" '戻り値はなし End Function そして、ワークシートの B1 セルに次の式を入力します。()は必須 です。  =IF(A1=1,TestMacro(),"")

  • 複数のマクロを条件付きで実行する

    会社でエクセル2003を使っています。 縦にデータを入力する表を作りました。 (1)氏名 (2)〒 (3)住所 (4)電話番号 (5)生年月日 (6)性別・・・など20項目を入力します。 入力完了後、別シートにデータを転記してそちらの別シートを印刷するというマクロを作りました。 ★ 例えば、その中で入力を絶対してほしい項目がありまして、それを忘れていたらメッセージボックスで「○○が未入力です」とお知らせしたいと思ってます。 ★←このマクロは、昨日質問させていただいて、クリアになりました。 もう一つのマクロ(コード?)を教えていただきたいのです。 未入力のセルがあればメッセージボックスが出て、未入力のセルを知らせて未入力をなくします。 未入力がなくなった段階で、同じファイルの別シートに移りたいのです。 (1)未入力のセルがあればメッセージボックスで知らせて、そのままのシート(Sheet1)にとどまって未入力セルにデータを入力する。 (2)隣のシート(Sheet2)にジャンプする 今はcall macro01(メッセージボックス)、call macro02(隣のシートへジャンプ) としているのですが、メッセージボックスが出て「OK」ボタンをクリックすると未入力のセルがあっても、Sheet2に飛んでしまいます。 未入力のセルがあれば、メッセージボックスが出てそのシートに留まり 未入力がなければ隣のシートに移る…というマクロ(コード?) 同じ事ばかり書いていますが、なにとぞ、よろしくお願いします。

専門家に質問してみよう