Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
設定数値範囲内でメッセージを出す方法
投稿日時: 20/06/29 12:50:23
投稿者: yasuke

お世話になります。
 
マクロ初心者で困っております。
現在、下記のマクロを使用しています。
 
セルA1〜A10の所に数値100以下と200以上が入力された時に
メッセージが出るようになっております。
 
これを数値100〜200以内の数値が入力された時にメッセージが出るようにしたいの
ですが、ご教示ください。よろしくお願いします。
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    If Intersect(Target, Me.Range("A1:A10")) Is Nothing Then Exit Sub
    If IsEmpty(Target) Then Exit Sub
     Application.EnableEvents = False
     If Target.Value > 200 Or Target.Value < 100 Or Not IsNumeric(Target.Value) Then
    MsgBox "連絡して下さい", vbCritical + vbDefaultButton1, "重量範囲逸脱"
     With Worksheets("Sheet6")
    If WorksheetFunction.CountA(.Rows(1)) = 0 Then
    .Cells(1).Resize(, 4) = Array("入力日時", "シート名", "入力値", "入力値先頭ユニコード")
                End If
                .Range("A2:D2").Insert xlDown
                .Cells(2, 1) = Format(Now(), "yyyy/mm/dd - hh:mm:ss")
                .Cells(2, 2) = Me.Name
                .Cells(2, 3) = Target.Value
                .Cells(2, 4) = WorksheetFunction.Unicode(Target.Value)
                If .Cells(.Rows.Count, 1).End(xlUp).Row > 100000 Then
                    MsgBox "ログの書込みスペースが不足しています初期化します"
                    .Range(.Rows(3), .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row)).Delete
                End If
                Target = Empty
                Target.Activate
            End With
        End If
    Application.EnableEvents = True
End Sub
 
 
 
 
 

回答
投稿日時: 20/06/29 15:04:35
投稿者: WinArrow
投稿者のウェブサイトに移動

yasuke さんの引用:

お世話になります。
 
マクロ初心者で困っております。
現在、下記のマクロを使用しています。
 
セルA1〜A10の所に数値100以下と200以上が入力された時に
メッセージが出るようになっております。
 
これを数値100〜200以内の数値が入力された時にメッセージが出るようにしたいの
ですが、ご教示ください。よろしくお願いします。
 

 
メッセージを出したいところに
Msgbox "〜〜〜〜"
を記述すればよいだけです。
 
どこでメッセージを出すのか?どんなメッセージを出すのか?
は、あなたが考ええることです。

投稿日時: 20/06/29 18:47:02
投稿者: yasuke

ご回答ありがとうございます。
  
メッセージを出したいところに
Msgbox "〜〜〜〜"
を記述すればよいだけです。と回答していただきましたが、
 
 
色々と説明が足りず申し訳ありません。
状態を説明させていただきます。
現在下記の所で
 
If Target.Value > 200 Or Target.Value < 100 Or Not IsNumeric(Target.Value) Then
MsgBox "連絡して下さい", vbCritical + vbDefaultButton1, "重量範囲逸脱"
 
100以下でメッセージが出て、200以上でメッセージが出ます。100〜200までの数値範囲では
メッセージは出ません。
これをメッセージを出したい範囲を100〜200までの数字が入力された時に変更したいのです。
100以下・200以上の数値はメッセージをでないようにするです。
 
If Target.Value > 200 Or Target.Value > 100 Or Not IsNumeric(Target.Value) Then
不等号を変更しただけでは上手く行きませんでした。
 
ご教示をお願い致します。
 
 
 

回答
投稿日時: 20/06/29 21:01:18
投稿者: WinArrow
投稿者のウェブサイトに移動

参考になるコードです。
 
IF 条件1 Then
    Msgbox "条件1です。"
Else
    Msgbox "条件1ではありません。"
End If
 
この参考コードを理解すれば、対応できるでしょう。
 
※改善したほうがよい条件
>If Target.Value > 200 Or Target.Value < 100 Or Not IsNumeric(Target.Value) Then
この条件文は、
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value > 200 Or Target.Value < 100 Then
のように切り分けた方が安全です。
 

回答
投稿日時: 20/06/30 13:47:12
投稿者: simple

Excelの学校とのマルチポストです。その他にもあるかもしれません。
質問掲示板で他人に作ってもらったコードの一部改変を
別の質問掲示板(こちら)に質問する、こういうことは止めて頂きたい。
 
しかも、
100未満または200超
という条件を
100以上かつ200以下
という条件に
変更するにはどうしたらよいか、という質問。
 
Not(A <100 Or A >200)でもいいし、
文字通りに、
A >= 100 And A <= 200
でもいいでしょう。
かなり基本的な内容です。
 
失礼ながら、ご自分で考えようとされておらず、
他人に100%依存では、今後も思いやられます。
論理演算子とか比較演算子とか基本的なところを、
もう少し復習されたほうがよいと思います。
 
そもそもコードをもらったなら、その質問掲示板で再質問すればよいのであって、
他の質問掲示板に質問するのはいかがなものですか?
せっかくコードを作成頂いた方に失礼だし、
それほど衆知を集めないとどうにもならない問題でもありません(その対極にある質問でしょう)。
再考願いたいですね。

投稿日時: 20/06/30 20:37:51
投稿者: yasuke

WinArrow 様
回答ありがとうございました。