• ベストアンサー

エクセルでマクロを自動的に実行

表題の通りなんですが、エクセルで、あるセルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのですが、そういったことってできるのでしょうか。 具体的には、  1、バーコードリーダーで数値をセルに入力  2、その数値に対応する名前をvlookup関数にて表示  3、その名前が入力された時点でマクロが自動的に実行 と言うものです。  3の部分がよく分からずに困っています。できるかどうか分かりませんが、もしできるようであるならその方法を教えていただければありがたいです。どうか、よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.15

こんにちは。 >それをしないようにする上で、自動的にマクロを実行させる事もできるのでしょうか。 それは以下のようになります。イベントドリブン型のマクロをアプリケーションのインスタンスにしてシートに設けます。ただし、Calculate イベントを設定してあるシートを使う時のみ、「元に戻る」が利きません。 今は、「データ」というシートのモジュールにマクロが登録してあるはずですから、そのすべてを、削除するか、コメントブロックしてしまってください。(コメントブロックというのは、先頭に「’」をつけることですが、〓のようなマークのツールボタンが出ていれば、それを使うと便利です。) シートを「データ」シートから、一旦、別のシートにするか、または、 Workbook_Open() を実行すれば、「データ」シートに設定されます。別のシートをアクティベートすると、そのイベントドリブン型マクロは、使えないようになります。 これでも、問題があるようでしたら、もう一度、Changeイベントの話から積み上げたほうがよいかもしれません。 '//ThisWorkbook モジュール// 'Option Explicit Private WithEvents App As Application Private Sub Workbook_SheetActivate(ByVal Sh As Object)  If Sh Is Worksheets("データ") Then   Set App = Application  End If End Sub Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)   If Sh Is Worksheets("データ") Then    Set App = Nothing    'MsgBox "DeSetting" '検査用   End If End Sub Private Sub App_SheetCalculate(ByVal Sh As Object)  On Error GoTo ErrHandler Application.EnableEvents = False  If Range("B1").Value <> "" Then  '実行プログラム  出勤r  'Beep '検査用  End If  Range("B1").ClearContents ErrHandler:  Application.EnableEvents = True  MsgBox Sh.Name End Sub Private Sub 出勤r()  Dim m As Integer  Sheets("データ").Select  m = Cells(1, 2).Value + 5  Range("D3").FormulaR1C1 = "=TIME(HOUR(RC[-3]),MINUTE(RC[-3])-5,0)"  Cells(m, 4).Value = Range("D3").Value End Sub Private Sub Workbook_Open()  Worksheets("データ").Activate  Set App = Application End Sub 注意:#13 の件については、修正されておりません。

atom002
質問者

お礼

返信をありがとうございます。 また、こちらからの返信が遅れてしまい申し訳ありません。 試してみたんですが、なぜかは分かりませんが、マクロが実行されませんでした。 シートの方に貼り付けて試したんですが、数値を入れてもうまくいきませんでした。 少し、私自身が簡単に考えすぎだったのかもしれません。 正直、全く分からないレベルの話になってきていて、そのままコピー・ペーストで試して分からないという事で、またコードをお願いすると言う繰り返しで、かなり私自身が甘え過ぎている気がして、大変申し訳なく思っております。 とりあえず、今回の自動でマクロを実行するという事に関しては、目的が達成されているので、逆に途中で終了するのもどうかとは思いますが、一回閉めさせてもらいたいと思います。 ひょっとしたら、また再度お聞きする事があるかもしれないですし、またお世話になることがあるかもしれません。その時はどうか、よろしくお願いします。 今回は、本当にありがとうございました。

その他の回答 (14)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>が、わざわざ、その仕組みが必要でしょうか? 私の書き込みに対するものだと思いますが、必要かどうかはわからなくても、もう少し情報がほしいです。それが必要か必要でないかは、ご質問者ご自身が決めてくださればよいです。 確かに、通信で一定期間に入ってくるものなら、タイマー機能で監視させれば良いかもしれませんが、不定期で入ってくるものに、常時監視させる方法としてはあまり関心しません。 それに、思ったようなイベントが発生しているかは、分からないです。手作業で入れるなら、話は簡単ですが、そうでない場合は、Change イベントでは、引っかからないこともあったような記憶があります。 私は、そんなに詳しい人間ではないので、もう少し詳しいことを確認したほうが良いと思ってお聞きしたまでです。 今の時点では、ご質問者の望むようなものには、直接結びつかないような気がしています。 これだけの回答で解決すると思っていらっしゃるのなら、それはそれでよいのですが。

atom002
質問者

補足

タイマー機能での監視の話ですが、以前の書き込みにそのような事が書いてあったので、使えるかと思っていたんですが、その内容を見る限りでは私の望んでいるものではありませんでした。 先ほどの書き込みにもお書きしましたが、できれば、バーコードリーダーにてバーコードを読み込ませる動作=コマンドボタンをクリックする動作 と言う使い方をしたいんです。 分かりにくい部分が多いかと思いますが、その際は再度補足します。どうか、よろしくお願いします。

noname#22222
noname#22222
回答No.3

まあ、タイマー監視すれば、当該セルに変更があったか否かは判るとは思います。 が、わざわざ、その仕組みが必要でしょうか? 1でイベントは発生していますので、そこで2、3を一気に処理すれば事足りると思いますが・・・。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 ご質問は、とても興味があります。 >セルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのです 私の思っているのと同じであれば、おそらく出来ると思います。 同じような経験が2度ありますが、私は、ハードがさっぱり分かりません。 >具体的には、 > 1、バーコードリーダーで数値をセルに入力 > 2、その数値に対応する名前をvlookup関数にて表示 > 3、その名前が入力された時点でマクロが自動的に実行 もう少し、詳しく教えください。 バーコードリーダーで数値をセルに入れるのは、どのようにしているのですか? 通信の手段を教えてください。どのように入ってくるのですか? その名前が入力された時点でマクロが自動的に「何を」実行すればよいのですか? ある程度の内容は教えてください。 イベント・ドリブン型だと、たぶん、イベントを感知しないのではないかと思います。 私は、掲示板では、ハード系から情報を入れて加工するマクロは提供したことがありますが、最後まで、その仕組みを良く分かりませんでした。うまくいったそうです。 その時の通信手段は、DDEでした。今のOfficeは、OLEが中心ですが、未だに、そういう方式で、Excelにデータを入れているとのことです。 なお、VlookUp は、必要ないような気がします。あればあったで、そこから、イベントを取れます。

atom002
質問者

補足

こんにちは。先日は、「ユーザーフォームに現在の時間を入れる」事に関してお世話になりました、ありがとうございます。 >バーコードリーダーで数値をセルに入れるのは、どのようにしているのですか? >通信の手段を教えてください。  これは、何桁かの数値に対応してあるバーコードをあらかじめ用意して、それに読み込ませるとセルにその数値が出てくるというものです。 通信手段は、USB端子につなげるだけでできるものです。 >その名前が入力された時点でマクロが自動的に「何を」実行すればよいのですか? >ある程度の内容は教えてください。  回答になるかどうかは分かりませんが、ユーザーフォームのコマンドボタンをクリックすることとまったく同じ事をしたいんです。具体的には、バーコードの番号に対応したシートに移動し、そのシートに書かれている日にちに現在の時間を打ち込みたいんです。(タイムカードをエクセルで行いたいんです)  コマンドボタンでは、納得のいくものができたんですが、バーコードリーダーでの対応がまったく分からないんです。  まだまだ、初心者な事もあって、十分に説明できていない部分もあるのではないかと思うので、もし、分かりにくい部分がありましたら、再度補足しますので、よろしくお願いします。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

仮にその対象セルがC3だとすると、以下のようなマクロを「そのシートのシートモジュール」に記述すればよいです。これはシートのデータが変更されたというイベントによって起動されます。(だから1.、2.の時点でも起動されますので、変更セルのアドレスをIf文で聞いています) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$3" Then '処理 End If End Sub

atom002
質問者

補足

返信をありがとうございます。 一度試してみて、うまくいったと思ったんですが、その後はどうやってもうまくいかなかったです。 理由もぜんぜん分かりません・・・

関連するQ&A

  • マクロの自動実行

    教えてください。 A1のセルの内容ををドロップダウンで選択するようにしてあります。 A1の内容によってB1のセルの内容を変更させたいと思っています。 通常はvlookup関数で対応するものを呼び出せばいいのですがB1セルに手動で入力することもあるので関数を書き込んで置けません。 そこでA1セルをドロップダウンで変更したときに自動でマクロ「変更」を実行して、C1セルにvlookupで呼び出してる内容をB1セルへ貼り付けできないでしょうか? よろしくお願いいたします。

  • 【エクセル】マクロの自動実行

    エクセル2003を使用しています。 例)セルH4に名前が入力された時に、 今まで「Ctrl + Q」で起動していたマクロを自動実行 出来るようにしたいのです。 上記のような動きをしてくれ関数ないしマクロを知っている方が 居ましたら教えてもらえないでしょうか?

  • エクセルのマクロ

    エクセルでマクロを使うときにセルに入力した数値などを変えた時に自動でマクロを実行するようにできませんか?

  • エクセル マクロを自動実行

    仕事で使っている書式で、A1に「あいうえお」と入力すると、A2「あ」、B2「い」、C2「う」、D2「え」、E2「お」とMID関数で振り分け、入力後、A行を「表示しない」と「再表示」するマクロをボタンで実行するようにしています。 そこで、 この書式には必ず入力しなければならない項目があるので(非表示しない行のセル)、この項目に入力したら行の非表示マクロを実行し、空白なら行の再表示マクロを実行出来るようにしたくて調べているのですが見つかりません。 1クリックの手間を省く方法をご存知の方ご教示ください。 宜しくお願いします。

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

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

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

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

  • エクセルのブックを開いた時にマクロを自動定期に実行したいのですが。

    エクセル97でブックを開いたときに、自動的にマクロを実行させたいのですが、どのようにマクロを記述すればいいのか教えて頂けませんか。 sub autorun() sheets(2).select sheets(1).cells(2,2)=cells(5,5) end sub のように、シート2のある数値をシート1のセルに自動的に貼付したいのですが。 このマクロは自動的には実行されませんので、どうすれば自動的に実行するようにできるのかが知りたいのですが。 よろしくお願いします。

  • エクセル マクロ自動実行について

    エクセルのVBAについて コードがわからないので質問します。 (超初心者です。) 表現が正しいのかわかりませんが 例 セルの範囲 A1セルからA10まで A1セルに1と入力すると 自動でaに変換される A2セルに1と入力すると 自動でaに変換される という形にコードを作りたいのですが コードが行き詰まってしまいわからないです。 すいませんがコードを 書いて頂けないでしょうか? よろしくお願いします。

  • セルの値が●ならば▲のマクロを自動で実行

    エクセルで、セルの値が●ならば▲のマクロを自動で実行するということはできるのでしょうか? セルの値が●月(TODAY関数)なら、自動的に置換をするように設定したいのです。

  • Excel マクロで自動入力

    ○の右隣に、自動で×が入力されるマクロはどのようにすればいいですか? どこかに置いた図形をクリックしてマクロが実行されるのでも、そのままセルに○を入力したら実行されるのでもいいのです。

専門家に質問してみよう