完全に素人ですみません。
A B C D E F
1 1 2 1
2 2 4 2
3 1 1 0
4
5
E1=B1-A1の数式が入ってます。
F1=D1-C1の数式が入ってます。
E列、F列が+になった場合のみコメントをメッセージボックスで出現させたいです。
以下のコードでやってみましたが、E1が+1となった場合はメッセージボックスが出てきてよいのですが、E2も+1となった場合は、メッセージボックスが2回出てきます。
一度だけ出現するようにするにはどうすればよいですか?
何卒、よろしくお願い申し上げます。
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E1").Value > 0 Then MsgBox "コメント"
If Range("E2").Value > 0 Then MsgBox "コメント"
If Range("E3").Value > 0 Then MsgBox "コメント"
If Range("F1").Value > 0 Then MsgBox "コメント"
If Range("F2").Value > 0 Then MsgBox "コメント"
If Range("F3").Value > 0 Then MsgBox "コメント"
End Sub
No.3ベストアンサー
- 回答日時:
補足でというより、まず検証結果を書いて頂きたかったです。
それでいいという前提です。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tmp As Variant
If Target.Count > 1 Then Exit Sub
If Target.Row < 5 Or Target.Column <> 5 And Target.Column <> 13 Then Exit Sub
If Target.Column = 5 Then
tmp = Range("V" & Target.Row)
Else
tmp = Range("W" & Target.Row)
End If
If tmp > 0 Then
MsgBox "コメント"
End If
End Sub
No.2
- 回答日時:
こんにちは。
>E列、F列が+になった場合のみコメント
+1 ということは、(動的に)増加したことであって、数値がプラスでも増加しなければ、コメントは出さない、ということだと思いました。難易度3~4クラスの難問のひとつだと思いました。
しかし、コードをみるとその様子はないようです。#1さんの回答も同様です。
私の読み違えでしたら、この以下のコードの解釈は間違っています。
'//
Dim mem
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ans As Variant
Dim rng As Range
Dim ret as Variant
If Target.Count > 1 Then Exit Sub
If Target.Column > 2 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set rng = Target(1).DirectDependents
If Intersect(rng, Columns("E:F")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value <> "" Then
ret = Target.Value
ans = Target.DirectDependents.Value
Application.Undo
mem = Target.DirectDependents.Value
Target.Value = ret
End If
If ans > mem Then
MsgBox "Increased"
End If
Application.EnableEvents = True
End Sub
No.1
- 回答日時:
A列からD列までの入力で実行させたいイベントなので、その列もチェックした方がいいです。
一例です。Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column > 4 Then Exit Sub
If Target.Column < 3 Then
tmp = Range("E" & Target.Row)
Else
tmp = Range("F" & Target.Row)
End If
If tmp > 0 Then
MsgBox "コメント"
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
メッセージを1度だけ表示したい。
Visual Basic(VBA)
-
excel VBA YESNO付きのメッセージボックスが2回出てしまいます。
Excel(エクセル)
-
エクセルVBA ブックを閉じる前に確認メッセージを表示したい
Excel(エクセル)
-
-
4
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
5
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
6
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
7
Excel VBA 空白セルがあったらメッセージボックスで知らせたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
エクセルで最初のスペースまで...
-
PowerPointで表の1つの列だけ...
-
VBAで文字列を数値に変換したい
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
文字列に数字を含むセルを調べたい
-
エクセル(勝手に太字になる)
-
エクセルで文字が混じった数字...
-
Excelで半角の文字を含むセルを...
-
A列がない・・・A列が非表示に...
-
「B列が日曜の場合」C列に/...
-
エクセルの表示画面(シート)...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 同じ値を探して隣の...
-
Excel、市から登録している住所...
-
Excelの行、列の左方向シフト、...
-
エクセルの表から正の数、負の...
-
エクセルのセル内の文字の一部...
-
オートフィルターをかけ、#N/A...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセルで最初のスペースまで...
-
エクセルVBA、別ブックへ転記す...
-
エクセル 文字数 多い順 並...
-
エクセル(勝手に太字になる)
-
VBAで文字列を数値に変換したい
-
エクセルで文字が混じった数字...
-
エクセルの表から正の数、負の...
-
「B列が日曜の場合」C列に/...
-
Excelで半角の文字を含むセルを...
-
エクセルの並び変えで、空白セ...
-
Excel、市から登録している住所...
-
エクセル 同じ値を探して隣の...
-
EXCELで 一桁の数値を二桁に
-
エクセル初心者です 関数の入れ...
-
A列がない・・・A列が非表示に...
-
オートフィルターをかけ、#N/A...
-
エクセルで、列の空欄に隣の列...
おすすめ情報
補足で、上記を加工して以下のようにしたいのですが、可能でしょうか?
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1
2
3
4 2 2
5 3 2 1 0
6 3 2
7 2 3 -1 1
・
34 3 1
35 4 2 1 1
E列にて、E5-E4の値をV5に返しています。
M列にて、M5-M4の値をW5に返しています。
この時、V列及びW列が+になった場合に1回のみメッセージボックスを表示させたいです。
何卒、よろしくお願い申し上げます。