- 締切済み
エクセルのマクロ
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nishi6
- ベストアンサー率67% (869/1280)
質問にあることは『Worksheet_Change』でできますが、 指定範囲だけで機能させたり、 入力値を書き換えた時の再度のイベントの発生、 内容を消去した時の処理、 複数セルの操作への対応、 コピー&ペーストなども考慮する必要があります。 欠点としては、マクロを使うので元に戻せないことがあります。 UnDo機能をつけようとすると大掛かりになります。操作の都度バックアップも気が利きませんし。 また、『Worksheet_Change』では、行・列の削除挿入がうまく感知できません。 シート名の変更も感知してほしいですがこれも普通には感知できません。 使用する時には、このあたりを気をつけるようにしています。ご参考に。 セルの値を書き換えるマクロの場合、(1)~(8)くらいが気をつけることと思っています。 '(1)Worksheet_Changeイベントを発生させる範囲。この例ならA列。 Const calcAreaAddress = "A:A" Private Sub Worksheet_Change(ByVal Target As Range) 'イベントを発生させる範囲と実際の変更範囲の共通部分 Dim changeArea As Range '個々のセル Dim rg As Range '(2)EnableEvents = Falseにするので、エラーが発生したらTrueにして終わる On Error GoTo ErrorHandler '(3)イベントを発生させる範囲と実際の変更範囲の共通部分を計算する Set changeArea = Intersect(Range(calcAreaAddress), Target) '(4)共通部分があったら処理を行う If Not changeArea Is Nothing Then '(5)ここで、再度セルの値を変更するマクロだと ' またWorksheet_Changeが発生するのでイベント発生を一時中断する Application.EnableEvents = False '(6)共通部分は複数セルの可能性があるので個々のセルで処理する For Each rg In changeArea '//////////////////////////////////////////// 'この部分がセルに変更があった時の処理になる If rg.Text <> "" Then rg = Int(rg) End If '//////////////////////////////////////////// Next '(7)処理が終わったらイベントが発生するように元に戻す Application.EnableEvents = True End If Exit Sub ErrorHandler: '(8)エラーが発生したらTrueにして終わる Application.EnableEvents = True End Sub
- tubasa7
- ベストアンサー率27% (8/29)
もう既にでているのですけどWorksheet_Changeというのを利用するとできるのですがこれはどのセルを変更した時も動作するので特定したセルを変更した時に別のセルを変更したいとかいうときには通用しなくなる場合があります。 その利用方法でそのときはIF文とかで判断するしかないんではないでしょうか。
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 シートのタブを右クリックして、コードの表示を選び、出てきたVBE画面に貼り付けます。 サンプルは、セルに値を打つと色を付けます。 新規ブックでテストしてください。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r As Range For Each r In Target If r = "" Then Target.Interior.ColorIndex = 0 Else Target.Interior.ColorIndex = 4 End If Next r End Sub
- ceita
- ベストアンサー率24% (304/1218)
メニューの ツール-オプション-計算方法の中の自動 を選ぶと、 マクロの再計算を自動で行ってくれるはずです。
関連するQ&A
- エクセルでマクロを自動的に実行
表題の通りなんですが、エクセルで、あるセルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのですが、そういったことってできるのでしょうか。 具体的には、 1、バーコードリーダーで数値をセルに入力 2、その数値に対応する名前をvlookup関数にて表示 3、その名前が入力された時点でマクロが自動的に実行 と言うものです。 3の部分がよく分からずに困っています。できるかどうか分かりませんが、もしできるようであるならその方法を教えていただければありがたいです。どうか、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2013のマクロについて。
Excel 2013のシートでセルに2桁の数字を入れていますがセルの書式設定でユーザー定義を"00"として数値が1桁の場合に頭にゼロがつくようにしてあります。このシートでマクロを作成した時、変数Aを"Dim A As Byte"と定義して、「A = "セル"」の式で マクロの実行が止まり、「実行時エラー'13':型が一致しません。」と出て数値として読み込めないようですがどなたか原因と解決方法ご存知の方教えて下さい。
- 締切済み
- Excel(エクセル)
- エクセルマクロでご教授下さい。
エクセルマクロでご教授下さい。 1.あるマクロをセルを入力(Enter)したら実行するには どのように記述すればいいでしょうか? 例えばG12に文字を入力しEnterした時 に実行したい。 2.あるマクロをシートを選択した時に実行するには どのように記述すればいいでしょうか? 以上宜しくお願い致します。
- ベストアンサー
- Visual Basic
- エクセルのマクロについて
エクセルのマクロ実行についてですが、 例えば、 E1セルの値が1ならばこうする(マクロ名 E1セル1) E2セルの値が2ならばこうする(マクロ名 E1セル2) E3セルの値が3ならばこうする(マクロ名 E1セル3) というマクロを別々に作りました。 これをボタンで実行する時に、 If Range("E1").Value = 1 Then ElseIf Range("E1").Value = 2 Then 2行目には作ったマクロを全部貼り付けないといけないのでしょうか? それとも簡単にこの場合は、マクロ名E1セル1を実行するという命令することができるのでしょうか? できるのであれば、入力方法を教えてください。 質問が分かりにくいと思いますが、よろしくお願いします。
- ベストアンサー
- Windows XP
- 【エクセル】マクロの自動実行
エクセル2003を使用しています。 例)セルH4に名前が入力された時に、 今まで「Ctrl + Q」で起動していたマクロを自動実行 出来るようにしたいのです。 上記のような動きをしてくれ関数ないしマクロを知っている方が 居ましたら教えてもらえないでしょうか?
- 締切済み
- オフィス系ソフト
- エクセル¥マクロで対話形式のプログラムが組める?
エクセルのマクロでこんなことはできますか? (1)まずプログラムを実行する。 (2)実行中に、プログラムは「○○○を入力してください」などというメッセージを発し入力待ち状態で停止する。 (3)使用者が指定されたセルに適切な数値などを入力しENTERを押す。 (4)プログラムは実行を再開する。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- セルに入力した数値に自動的に'をつけるマクロを作成した
お世話になっております。 早速質問です。 エクセルのマクロを作成しています。 いくつかセルに文字や数値を入力し、マクロを実行した時、 自動的にシングルクォーテーションマーク(')を文字や数値の両端に 付けたい(例:aaaaa→'aaaaa')のですが いろいろ探していますが見つかりません。 お力をお貸し頂きませんでしょうか。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルのブックを開いた時にマクロを自動定期に実行したいのですが。
エクセル97でブックを開いたときに、自動的にマクロを実行させたいのですが、どのようにマクロを記述すればいいのか教えて頂けませんか。 sub autorun() sheets(2).select sheets(1).cells(2,2)=cells(5,5) end sub のように、シート2のある数値をシート1のセルに自動的に貼付したいのですが。 このマクロは自動的には実行されませんので、どうすれば自動的に実行するようにできるのかが知りたいのですが。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCELで”+100"を実行するマクロ
EXCELで、マクロを実行するたびに、そのセルに入っている数に100プラスされるマクロを作りたいのです。 意味がよく分からないかもしれませんが、 例えば、あるセルに"100"という数値が入っていて、 1回実行すれば100+100で"200"に、もう1度実行すると、200+100で"300"に。…という感じです。 私的に考えたのは、 別のセルに"そのセル+100"をする式を書き込み、 コピー&元のセルに値貼り付けをし、 式の入った別のセルをDELする… というのをマクロにしてみたのですが、 イマイチうまくないというか… よい方法があったら、アドバイスください。
- ベストアンサー
- オフィス系ソフト
- EXCL のマクロ自動実行(イベントによる)についてお教えください。
EXCL のマクロ自動実行(イベントによる)についてお教えください。 エクセルのあるセル(たとえばA1セル)に入力するとマクロが自動実行する方法をお教えください。 よろしくお願いいたします。
- ベストアンサー
- Windows XP