- ベストアンサー
EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム
- EXCEL VBAで作成するシート内の特定のセルに値が入力された際に処理を実行するプログラムについて解説します。
- このプログラムでは、EXCELシートに計測データを取り込み、設定値と異なるデータが入力された場合にトリガーを出し、他のアプリケーションを操作することができます。
- 具体的な実装方法やサンプルコードについては、以下のリンク先で詳しく説明しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Private Sub Worksheet_Change(ByVal Target As Range) A = 0 '---変数A初期化 If Target.Address = "$A$1" Then '---セルA1の値が変更されたら A = Range("A1") '---変数AにセルA1の値を代入 If A < 10 Then '---変数Aの値が10より小さかったら Range("B1") = A '---セルB1に値を代入 Else '---それ以外は変数Aに0を代入(初期化) A = 0 End If End If If Target.Address = "$B$1" Then '---セルB1の値が変更されたら Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE", 3 '---プログラム(例はIE)を起動(最大化表示モード) End If End Sub 少々回りくどいですが、こんな感じでできました。 注釈に書いてありますが、考え方は ?セルA1の変更を受けて変数AにセルA1の値を代入 ?変数Aの値を条件分岐で条件が適った場合セルB1にAの値を代入 ?セルB1の変更を受けてプログラムを立ち上げる です。
その他の回答 (2)
トリガーってのがよくわからないのですが、 設定値以外の場合にのみその行を強調する手段なら VBAを使わなくとも関数と条件付き書式でできますが・・・。
補足
”トリガー”について補足します。 あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。 単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作することをしたいと考えています。
sheet1にあるイベント Private Sub Worksheet_Change(ByVal Target As Range) ' ' ' 'Target.Column 横 'Target.Row 縦 End Sub レベルが低そうなのでスルーされてしまうとわ思っていた...orz 回答3のように 保存するなら public で 内部変数にした方がいいよ ただ初期化を ワークブックに開いた時などにしておかないといけないが Private Sub Workbook_Open() End Sub 参考 Private Sub Worksheet_Change(ByVal Target As Range) 'A1以外のところが変更されたら 抜ける If Target.Address <> "$A$1" Then Exit Sub 'A1 の 値が 100以上なら IEを起動 If Range("A1") > 100 Then Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE", 3 End If End Sub A1の値を100以上にするとIEが起動するプログラム ただし、文字列のエラー処理を入れてないので 間違った値(全角文字)を入れても IEが立ち上がる ↑ コーディングが大変なので組んでないが まあ、ちゃんとVBを理解してれば このような質問の仕方にはならないけどね 基本から精進してください
お礼
アドバイスありがとうございます。 質問の説明不足もありもうしわけありません。
お礼
ありがとうございました。 説明もわかりやすく、参考になりました。