本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

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

1人が「役に立った」と評価
ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA シート内の特定のセルに値が入…)

EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム

2023/10/16 05:24

このQ&Aのポイント
  • EXCEL VBAで作成するシート内の特定のセルに値が入力された際に処理を実行するプログラムについて解説します。
  • このプログラムでは、EXCELシートに計測データを取り込み、設定値と異なるデータが入力された場合にトリガーを出し、他のアプリケーションを操作することができます。
  • 具体的な実装方法やサンプルコードについては、以下のリンク先で詳しく説明しています。
※ 以下は、質問の原文です

EXCEL VBA シート内の特定のセルに値が入…

2008/07/28 02:32

EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム

EXCELシート内の特定のセルに値が入力された際に処理を実行するプログラムをEXCEL VBAで作成したいと考えています。
EXCELに計測データを取込み、このデータが設定値以外の場合のみ、トリガーを出す様なイメージで使いたいと思います。

どの様に考えれば良いでしょうか?サンプル等ありましたら紹介ください。

上記質問の”トリガー”について補足します。
あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。
単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作したいという意味です。。

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

ベストアンサー
2008/07/29 12:53
回答No.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の変更を受けてプログラムを立ち上げる
です。

お礼

2008/08/01 21:58

ありがとうございました。
説明もわかりやすく、参考になりました。

質問者

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

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する

その他の回答 (3件中 1~3件目)

2008/07/28 11:57
回答No.2

トリガーってのがよくわからないのですが、
設定値以外の場合にのみその行を強調する手段なら
VBAを使わなくとも関数と条件付き書式でできますが・・・。

補足

2008/07/28 16:24

”トリガー”について補足します。
あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。
単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作することをしたいと考えています。

質問者
2008/07/28 09:01
回答No.1

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

アドバイスありがとうございます。

質問の説明不足もありもうしわけありません。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。