|
|
| Excel VBA Macro ・ フロー制御等 ・ FAQ |
|
特定のセルに特定の値が入力されたときにマクロを自動的に実行するには?
|
|
|
|
Question 55.6 |
Excel VBA Borad (掲示板)より |
 |
 |
|
|
セル"A5"に数値"1"を入力するとマクロ"XX"を実行するように設定したいのですが、方法がわかりません。
最初、コマンドボタンにマクロ"XX"を登録しておいて実行していたのですが、ボタンをクリックしなくてもマクロを実行できる方法がないものかと・・・。
初心者なもので、専門的な用語はほとんどわかりません。どなたか優しく教えてください。お願いします。
|
|
|
Visual Bacic Editor(マクロの画面) を開くと、プロジェクト エクスプローラ が表示されていると思います。表示されていない場合は、ツールバーの{表示}- {プロジェクト エクスプローラ} で表示します。
その中に Sheet1、Sheet2・・・と表示されていますので、マクロを設定したいシートを選んでダブルクリックします。
そうすると左上のコンボボックスのような[オブジェクト]ボックスが {General} と表示されます。
![[オブジェクト]ボックスと[プロシージャ]ボックス](Gazo/Yn9/YNxv9c7.gif)
それをドロップダウンで {Worksheet} に変更します。
次に、右上の[プロシージャ]ボックスが {Selection Change} となっているのを {Chenge} に変更し下記のマクロを記述します。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyRow As Long
Dim MyCol As Integer
MyRow = Target.Row
MyCol = Target.Column
If MyRow = 5 And MyCol = 1 Then
If Cells(5, 1) = 1 Then 'または If Target = 1 Then
XX '動かしたいマクロ名
End If
End If
End If
End Sub
|
|
|
うわあぁぁ。出来テル。ありがとうございまーーす。助かりました。
ちなみに Cells(5, 1) = 1 となっていますが、セル(A5) に参照式が入っていた場合はどうなるのでしょうか?
セル(A5) に直接 "1"を入力すると上手くいくのですが、他のセルを参照する式を入れて、結果を"1"にすると上手くいきません。 どうか教えてください。お願いします。
|
|
|
セルの値が再計算によって変更されたときには、Changeイベントが発生しません。代わりに Calculate イベントを使用すれば可能です。
Private Sub Worksheet_Calculate()
If Cells(5, 1) = 1 Then
XX '起動するマクロ名
End If
End Sub
|
|
|
|
| |
|
|