このQ&Aは役に立ちましたか?
EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム
2023/10/16 05:24
- EXCEL VBAで作成するシート内の特定のセルに値が入力された際に処理を実行するプログラムについて解説します。
- このプログラムでは、EXCELシートに計測データを取り込み、設定値と異なるデータが入力された場合にトリガーを出し、他のアプリケーションを操作することができます。
- 具体的な実装方法やサンプルコードについては、以下のリンク先で詳しく説明しています。
EXCEL VBA シート内の特定のセルに値が入…
2008/07/28 02:32
EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム
EXCELシート内の特定のセルに値が入力された際に処理を実行するプログラムをEXCEL VBAで作成したいと考えています。
EXCELに計測データを取込み、このデータが設定値以外の場合のみ、トリガーを出す様なイメージで使いたいと思います。
どの様に考えれば良いでしょうか?サンプル等ありましたら紹介ください。
上記質問の”トリガー”について補足します。
あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。
単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作したいという意味です。。
質問者が選んだベストアンサー
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の変更を受けてプログラムを立ち上げる
です。
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
その他の回答 (3件中 1~3件目)
トリガーってのがよくわからないのですが、
設定値以外の場合にのみその行を強調する手段なら
VBAを使わなくとも関数と条件付き書式でできますが・・・。
補足
2008/07/28 16:24
”トリガー”について補足します。
あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。
単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作することをしたいと考えています。
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を理解してれば
このような質問の仕方にはならないけどね
基本から精進してください
お礼
2008/08/01 22:00
アドバイスありがとうございます。
質問の説明不足もありもうしわけありません。
お礼
2008/08/01 21:58
ありがとうございました。
説明もわかりやすく、参考になりました。