みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

表題の通りなんですが、エクセルで、あるセルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのですが、そういったことってできるのでしょうか。

具体的には、
 1、バーコードリーダーで数値をセルに入力
 2、その数値に対応する名前をvlookup関数にて表示
 3、その名前が入力された時点でマクロが自動的に実行
と言うものです。 

3の部分がよく分からずに困っています。できるかどうか分かりませんが、もしできるようであるならその方法を教えていただければありがたいです。どうか、よろしくお願いします。

投稿日時 - 2006-08-24 11:57:12

QNo.2359085

困ってます

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

こんにちは。

>それをしないようにする上で、自動的にマクロを実行させる事もできるのでしょうか。

それは以下のようになります。イベントドリブン型のマクロをアプリケーションのインスタンスにしてシートに設けます。ただし、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 の件については、修正されておりません。

投稿日時 - 2006-08-29 13:12:06

お礼

返信をありがとうございます。
また、こちらからの返信が遅れてしまい申し訳ありません。

試してみたんですが、なぜかは分かりませんが、マクロが実行されませんでした。
シートの方に貼り付けて試したんですが、数値を入れてもうまくいきませんでした。

少し、私自身が簡単に考えすぎだったのかもしれません。
正直、全く分からないレベルの話になってきていて、そのままコピー・ペーストで試して分からないという事で、またコードをお願いすると言う繰り返しで、かなり私自身が甘え過ぎている気がして、大変申し訳なく思っております。
とりあえず、今回の自動でマクロを実行するという事に関しては、目的が達成されているので、逆に途中で終了するのもどうかとは思いますが、一回閉めさせてもらいたいと思います。

ひょっとしたら、また再度お聞きする事があるかもしれないですし、またお世話になることがあるかもしれません。その時はどうか、よろしくお願いします。
今回は、本当にありがとうございました。

投稿日時 - 2006-09-02 01:41:35

ANo.15

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(15)

ANo.14

こんにちは。Wendy02です。

>バーコードの数値(あるいはVlookup関数での名前)の違いを認識する

それは、バーコードの数値の分解がよいですね。

だから、例えば、以下は、商品バーコードですが、一部分を取り出して別けます。

二つ案を考えました。


A1:

4912345678904
(書式で整えると良いです。「00 0000 000000 0」)

=IF(MID(A1,3,4)="1234",VLOOKUP(A1,Sheet2!$A$1:$B$200,2),VLOOKUP(A1,Sheet3!$A$1:$B$200,2))

ただ、これは、ひとつの式にまとめましたが、このように取り出すことも可能です。

A1:

4912345678904

C1:

=MATCH(MID(A1,3,4),{"1111","1234","3333","4444"},0)

B1:

=If(IsError(C1),"", VLOOKUP(A1,INDIRECT("Sheet"& C1 &"!A1:B100"),2))


>2、コードの終了時に削除される事については、今の所全く問題はないんですが、セルが次に行かない様にする方法はあるのでしょうか。

以下のようにしてみたらいかがですか?

If ......

出勤r
 'Beep '検査用
Range("A4").Select '←If で囲まれた中に入れてみたらいかがですか?
End If


こちらで、今試してみましたが、VlookUpの値の変化がないと、これはマクロが動かないのです。たぶん、それで、不都合はないとは思いますが、もしも、気になる時は、空いたセルに、=Now() と入れると良いです。

なお、このCalculate マクロには、最大の欠点は、「元に戻す」というコマンドが、ブック全体に利かなくなってしまいます。もし、それで不便を感じられるようでしたら、今のスタイルは変えたほうがよいかもしれません。

皆さんが、もうお話を出していただいているので、後先で申し訳ないのですが、バーコードリーダー・ソフトウェアは、OLE を使っているようですね。そうすると、その設定(プロパティ)の中で、CrコードやCrLfコード(通称、改行コード)の付加を処理することも可能ではないか、と思っています。

もちろん、私のコードは、たぶん、ほとんど、出だしだけを変えるだけで済むことですが。

投稿日時 - 2006-08-27 11:02:20

補足

返信をありがとうございます。また、返信が遅くなってしまい、大変申し訳ありませんでした。
本当に助かりました。
おかげで、だいたい思ったとおりの事ができるようになりました。
ありがとうございました。

今回、補足に書かせていただいたのは他でもありません。
>なお、このCalculate マクロには、最大の欠点は、「元に戻す」というコマンドが、ブック全体に利かなくなってしまいます。もし、それで不便を感じられるようでしたら、今のスタイルは変えたほうがよいかもしれません。

この部分が気になったからです。
今の所、特に不便は感じてはおりませんし、訂正の際にEnterを押すとCalculateのマクロが貼り付けてあるシートのセルに移動すると言う事が分かったのは非常によかったんですが、それをしないようにする上で、自動的にマクロを実行させる事もできるのでしょうか。

先々のことを考え、非常にずうずうしいとは思いますが、どうか、よろしくお願いします。

投稿日時 - 2006-08-29 01:33:08

ANo.13

補足です。

Target.Address = "$A$4"
が判定基準なら、

こちらかは、
If Range("B1").Value <> "" Then
  ↓
If Range("A4").Value <> "" Then
に換えてください。ただし、現在のコードでは、終了すると削除されます。

投稿日時 - 2006-08-26 12:24:33

補足

度重なる返信を本当にありがとうございます。

試してみましたら、マクロが実行されました。
丁寧に教えていただいた上に、その結果が、私が望んでいた形になりうれしく思っております。

更に質問しても良いでしょうか?
コードに関しては完全なんですが、新たな問題が数点でてきました。
1、バーコードの入力によって、コードが実行されるようになりましたが、そのバーコードの数値(あるいはVlookup関数での名前)の違いを認識する事はできるのでしょうか?希望としては、別のシートの名前の一覧に対応したものにしたいんですが・・・

2、コードの終了時に削除される事については、今の所全く問題はないんですが、セルが次に行かない様にする方法はあるのでしょうか。私なりに、Wendy02さんが作られたコードの下の部分に、シートのセレクトとrange("a4").selectと加え、試してみたんですが、他の作業をした場合でもEnterを押したとたんに、そのシートのa4に移ってしまうんです。何か、良い方法はあるのでしょうか。

今の所、考えられる質問としましては上記の二点です。私が全く分からないコードなので、ほとんどいじる事すらできません。希望としましては、バーコードの数値に対応したマクロをそれぞれ実行すると言う事になります。(バーコードリーダー=ユーザーフォームのコマンドボタン)

それ以上のことができるのかは分かりませんし、これ以上迷惑になるかもしれませんが、もし時間を割いていただけるのであれば、回答をよろしくお願いします。

投稿日時 - 2006-08-27 00:49:17

ANo.12

こんにちは。Wendy02です。

>Wendy02さんのコードでも試してみました。そうしたら、今度はマクロが実行したんですが、同じ作業を繰り返した後で「スタック領域が不足」というメッセージが出ました。

たぶん、何度も同じ繰り返しで、イベントの無限ループを起こしてしまったようですね。ですが、マクロは瀕死の状態でも、どうやら生きていたようですね。^^;
おそらく、その路線は使えるような気がします。

複線を張って申し訳ないのですが、私は、一応、Calculate イベントの路線で続けさせてもらいます。その前に解決したら、こちらは離脱します。

それで、私はあくまでも、VlookUp関数などがあるという条件です。ない場合は、Now や Today関数をシートにおいておけばよいです。「出勤プログラム」の内容的なものは詳しくは分かりませんが、なるべく近い姿にしました。

イベントの除外条件は、Range("B1").Valueに数字や文字列があるかどうかの判定ですから、消されては困る場合は、何か別の手段を講じなければなりません。

'なお、これは、*シートモジュール*のみです。

'Option Explicit
Private Sub Worksheet_Calculate()
On Error GoTo ErrHandler
Application.EnableEvents = False
 If Range("B1").Value <> "" Then
 '実行プログラム
 出勤r
 'Beep '検査用
 End If
 Range("B1").ClearContents
ErrHandler:
 Application.EnableEvents = True
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

投稿日時 - 2006-08-26 11:08:44

ANo.11

ザッと見た限りですが...

> If Target.Address = "$a$4" Then

VBA は大文字・小文字、全角・半角を区別しますので、ここが原因です。

 IF Target.Address = "$A$4" Then

としてみては。

投稿日時 - 2006-08-26 11:08:32

お礼

返事が遅れてしまいましたが、アドバイスをありがとうございました。
シートモジュール、標準モジュールの区別が今まで分かりませんでしたが、教えていただき大変勉強になりました。

まだまだ、初心者で我流でやっているのでまた質問する事があると思いますが、その時はどうか、よろしくお願いします。

投稿日時 - 2006-09-02 01:44:35

ANo.10

> ちなみに、キーボードによる入力でもうまくいっておりません。

キーボードからの直接入力で Change イベントが発生しないこと事態がオカ
シイです。

基本的なことを確認したいのですが、今まで示されたコードが書かれている
場所はどこなのでしょうか?

ワークシートのイベント処理なので、シートモジュールに貼り付けなければ
ならないわけですが。

標準モジュールとかに貼ってないですか?

また、#5 で補足いただいたコードは End Sub が足りません。何かすれ違い
がある様に思います。どうも、こうした回答・補足をいくら繰り返していて
も、解決しない気がしてきました。

まず、ご自分で現在までに書いたコードを「省略しないで全て補足」して
みて下さい。

投稿日時 - 2006-08-26 00:01:46

補足

返信ありがとうございます。

KenKen_SPさんの回答をいただいてすごく基本的な事が間違っている事に気がつきました。標準モジュールに貼っておりました。お恥ずかしながら、「シートモジュール」「標準モジュール」の区別が今まで全くできてなく、全て標準モジュールにて行っておりました。お手間を取らせてしまい、大変申し訳ありませんでした。
また、コードのEnd Subが抜けているご指摘の点ですが、書き込みを終わった後で気がつき、どうにもできないままご指摘を受けると言う事になってしまいました。こちらも申し訳ありませんでした。実際、後はEnd Subをつけるだけで、その他、不必要なセルの移動の部分を消しただけのコードであります。

回答の中で教えていただきました、シートモジュールに、
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$a$4" Then
 出勤   '処理
 End If
 End Sub

そして、標準モジュールの出勤のコード
Dim m As Byte
Sheets("データ").Select '出勤時間を確定させる
m = Cells(1, 2).Value + 5
Sheets("データ").Select
Range("D3").Select
ActiveCell.FormulaR1C1 = "=TIME(HOUR(RC[-3]),MINUTE(RC[-3])-5,0)"
Range("D4").Select
Range("D3").Select
Selection.Copy
Cells(m, 4).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
にて、試みてみました。しかし、結果的に実行はしませんでした。

また、Wendy02さんのコードでも試してみました。そうしたら、今度はマクロが実行したんですが、同じ作業を繰り返した後で「スタック領域が不足」というメッセージが出ました。

ほんの少しだけ、前進したような気がします。
皆様にはお手間を取らせてしまい、大変申し訳なく思いますが、どうか、よろしくお願いいたします。

投稿日時 - 2006-08-26 01:00:16

ANo.9

s_husky です。

全く、新しいシートを用意してテストされることをお勧めします。
多分、成功すると思います。
もし、成功したのであれば、原因はVBAの誤動作です。
その場合、プロシージャを再配置(コピー&ペースト)した可能性があります。
一度だけ他からコピーすることは許されますが、再配置は厳禁です。
再配置の後に全く予測不能の動作が始まります。

是非、全く、新しいシートで1のテストを!
成功すれば、そこに全ての処理を書けば完成です。

投稿日時 - 2006-08-25 22:03:48

ANo.8

こんにちは。

http://barcode.technical.jp/handbook2/2-1.html
バーコードリーダーで読み取ったバーコードの値をセルに入力する

もし、このようなスタイルで、VlookUp で値が変わるなら、Calculate イベントが働くはずです。
VlookUp は、揮発性(Volatile)関数で、代入される値が変われば、イベントを生成します。

どのような値になるかは別として、簡単に書けばこのようになります。

Private Sub Worksheet_Calculate()
 If Me.Range("A4").Value <> "" Then
 '実行プログラム
 End If
End Sub

ただ、個人的には、そういう方法は、古くなってしまうと思っています。どこかで、けじめをつけていかないといけないなって思います。もちろん、VBAについてを言っているわけではありません。

投稿日時 - 2006-08-25 12:41:58

補足

返信をありがとうございます。
また、バーコードリーダーに関してのHPを教えていただき、ありがとうございます。

教えていただいたコードを使い、早速試してみたんですが、なぜか実行されませんでした。changeと同様、キーボードで値を入力してみましたが、それも実行されませんでした。
なぜそうなるのか分からなかったので、他のHPに載っていたcalculateのコードでも試してみましたが、実行されず・・・

何が原因なんでしょうか。changeやcalculateと言ったものがただ単に使えないだけなんでしょうか。

度々で申し訳ありませんが、よろしくお願いします。

投稿日時 - 2006-08-25 21:16:17

ANo.7

問題の切り分けが必要だと思います。2. 3.は取り合えず横においておき、
まずは 「バーコードリーダからの入力を検知する」ことから考えた方が良さ
そうです。

バーコードリーダ側でバーコードを読み取ったあとに「改行を送るかどうか」
の設定項目がないですか? 「改行を送らない」設定になっているのでは?

Worksheet_Change イベントはあくまで、「セルの値が更新」されたとき発生
するものです。ここで、一般的なバーコードリーダの入力原理は、

  ・「キーボード入力のシミュレート」

ですから、バーコードリーダからの入力で Worksheet_Change イベントを発生
させるためには、最後に Enter キー(改行)が送信され、「値が確定」する
ことが必要です。

これが送られていないので、Worksheet_Change イベントが発生しないのでは?

バーコードリーダによっては、この設定自体がないかもしれませんが、取説を
確認してみて下さい。

 # テキストボックスなら KeyDown とか KeyPress などのイベントでも
 # 検知可能なので、改行が送信されなくても良いのですが...

投稿日時 - 2006-08-25 09:05:22

補足

度々の返信をありがとうございます。

バーコードリーダーが値を読み込む際、入力モードは直接入力になっておりますので、Enterキーを押さなくても改行はされているようです。
ですが、改行されていても、マクロが起動しないんです。ちなみに、キーボードによる入力でもうまくいっておりません。

バーコードリーダーは会社のもので、古い型のようですので、取説はないんです・・・

投稿日時 - 2006-08-25 20:39:20

ANo.6

s_husky です。

まず、99%プログラミングは完成しています。
3が自動実行されない原因は、既答の通りだと思います。

<解決1>

強制的にイベントを発生させる。
例えば、2でキーを送出する。(SendKeys etc.)
しかし、これは、邪道です。

<解決2>

バーコード処理そのものを見直す。

・バーコードはバーコードのみをセルに代入しており{ENTER}を送っていないのではないのか?

<わざわざと書いた理由>

私は、バーコード入力フォームを用意しています。
その小さいフォームに

・現行のセル名。
・バーコード表示テキストボックス。

を表示。
バーコードリーダは最後に{Enter}を送るように設定。
更に、このフォームから直接に2、3を実行する関数を起動。
1、2、3の処理を複数の関数に分けて書くことと一気に実行することは矛盾しないと思います。
「わざわざ」と書いた理由です。

これで、キー入力との並行処理が完成します。
なお、バーコードはキーボード部分に接続しています。
線は分岐してバーコードとキーボードを双方の信号を受け散るという訳です。

投稿日時 - 2006-08-25 08:23:46

補足

返信をありがとうございます。
 
解決2については、入力モードが直接入力になっておりますので、Enterが押されていなくても値が入力されております。また、値をキーボードから直接入力しても、マクロが起動しないんです。

「バーコード入力フォーム」とは、どのようなものでしょうか。それを利用する事により、1→3(バーコードで数値を読み込むことで、マクロが自動的に実行)することができるのでしょうか。もし、差支えがなければ是非教えてください。どうか、よろしくお願いします。

投稿日時 - 2006-08-25 20:51:41

ANo.5

こんにちは。KenKen_SP です。

> 一度試してみて、うまくいったと思ったんですが、その後はどうやっても
> うまくいかなかったです。

zap35 さんの言われている「対象セルがC3...」は、バーコードリーダーか
ら数値が入力されるセルのことだと思いますが、単純な勘違いがありそうなの
で確認して下さい。「対象セルがC3...」のセルと

> その数値に対応する名前をvlookup関数にて表示

のセルとごちゃ混ぜになってませんか?

関数による表示の変化では Change イベントは発生しません。つまり VLOOKUP
関数の結果でセルの表示が変更されても Change イベントは発生しないという
ことです。Change イベントでこのセルを指定してないですかね...

それで、1回目はうまくいくが、2回目は動作しない...となっているのでは
ないですか?

投稿日時 - 2006-08-24 18:21:33

補足

返信をありがとうございます。zap35 さんのコードを少々アレンジして、
 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$a$4" Then
 出勤   '処理
 End If
 
Sub 出勤()
Dim m As Byte
Sheets("データ").Select
m = Cells(1, 2).Value + 5
Sheets("データ").Select
Range("D3").Select
ActiveCell.FormulaR1C1 = "=TIME(HOUR(RC[-3]),MINUTE(RC[-3])-5,0)"
Range("D3").Select
Selection.Copy
Cells(m, 4).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
と言う事で、a4にはバーコードで数値を読み込ませると、「出勤」のマクロが実行されるんじゃないかと思ったんですが、うまくいきませんでした。「出勤」のマクロ自体は単独で実行を押してもうまくいきますが、バーコードでは何度試してみてもうまくいきません。もし、原因が分かるようでしたら、よろしくお願いします。

投稿日時 - 2006-08-24 21:17:53

ANo.4

>が、わざわざ、その仕組みが必要でしょうか?

私の書き込みに対するものだと思いますが、必要かどうかはわからなくても、もう少し情報がほしいです。それが必要か必要でないかは、ご質問者ご自身が決めてくださればよいです。

確かに、通信で一定期間に入ってくるものなら、タイマー機能で監視させれば良いかもしれませんが、不定期で入ってくるものに、常時監視させる方法としてはあまり関心しません。

それに、思ったようなイベントが発生しているかは、分からないです。手作業で入れるなら、話は簡単ですが、そうでない場合は、Change イベントでは、引っかからないこともあったような記憶があります。

私は、そんなに詳しい人間ではないので、もう少し詳しいことを確認したほうが良いと思ってお聞きしたまでです。

今の時点では、ご質問者の望むようなものには、直接結びつかないような気がしています。

これだけの回答で解決すると思っていらっしゃるのなら、それはそれでよいのですが。

投稿日時 - 2006-08-24 13:51:05

補足

タイマー機能での監視の話ですが、以前の書き込みにそのような事が書いてあったので、使えるかと思っていたんですが、その内容を見る限りでは私の望んでいるものではありませんでした。

先ほどの書き込みにもお書きしましたが、できれば、バーコードリーダーにてバーコードを読み込ませる動作=コマンドボタンをクリックする動作 と言う使い方をしたいんです。

分かりにくい部分が多いかと思いますが、その際は再度補足します。どうか、よろしくお願いします。

投稿日時 - 2006-08-24 21:16:15

ANo.3

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

投稿日時 - 2006-08-24 12:57:54

ANo.2

こんにちは。

ご質問は、とても興味があります。

>セルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのです

私の思っているのと同じであれば、おそらく出来ると思います。
同じような経験が2度ありますが、私は、ハードがさっぱり分かりません。

>具体的には、
> 1、バーコードリーダーで数値をセルに入力
> 2、その数値に対応する名前をvlookup関数にて表示
> 3、その名前が入力された時点でマクロが自動的に実行

もう少し、詳しく教えください。
バーコードリーダーで数値をセルに入れるのは、どのようにしているのですか?
通信の手段を教えてください。どのように入ってくるのですか?

その名前が入力された時点でマクロが自動的に「何を」実行すればよいのですか?
ある程度の内容は教えてください。

イベント・ドリブン型だと、たぶん、イベントを感知しないのではないかと思います。

私は、掲示板では、ハード系から情報を入れて加工するマクロは提供したことがありますが、最後まで、その仕組みを良く分かりませんでした。うまくいったそうです。

その時の通信手段は、DDEでした。今のOfficeは、OLEが中心ですが、未だに、そういう方式で、Excelにデータを入れているとのことです。

なお、VlookUp は、必要ないような気がします。あればあったで、そこから、イベントを取れます。

投稿日時 - 2006-08-24 12:17:57

補足

こんにちは。先日は、「ユーザーフォームに現在の時間を入れる」事に関してお世話になりました、ありがとうございます。

>バーコードリーダーで数値をセルに入れるのは、どのようにしているのですか?
>通信の手段を教えてください。
 これは、何桁かの数値に対応してあるバーコードをあらかじめ用意して、それに読み込ませるとセルにその数値が出てくるというものです。
通信手段は、USB端子につなげるだけでできるものです。

>その名前が入力された時点でマクロが自動的に「何を」実行すればよいのですか?
>ある程度の内容は教えてください。
 回答になるかどうかは分かりませんが、ユーザーフォームのコマンドボタンをクリックすることとまったく同じ事をしたいんです。具体的には、バーコードの番号に対応したシートに移動し、そのシートに書かれている日にちに現在の時間を打ち込みたいんです。(タイムカードをエクセルで行いたいんです)
 コマンドボタンでは、納得のいくものができたんですが、バーコードリーダーでの対応がまったく分からないんです。

 まだまだ、初心者な事もあって、十分に説明できていない部分もあるのではないかと思うので、もし、分かりにくい部分がありましたら、再度補足しますので、よろしくお願いします。

投稿日時 - 2006-08-24 13:11:55

ANo.1

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

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
'処理
End If
End Sub

投稿日時 - 2006-08-24 12:03:58

補足

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

投稿日時 - 2006-08-24 13:54:36

あなたにオススメの質問