プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。
WIN10 エクセル2013 です。

例えば、
何等の原因で間違いか故意かでセルをアクティブにしたとき、
下記のマクロで

  入力済みです。
  修正しますか?

 「はい」 「いいえ」

のメッセージボックスが表示されます。


修正したいときは 「はい」をクリックするとメッセージボックスが
消えてよいのですが

修正しないときは 「いいえ」をクリックすると
例えば参考図のE8アクティブとき上の「いいえ」ボタンでは参考図のE12の空白まで「いいえ」ボタンを繰り返し押さなければなりません。

E8のセルを修正しないときは「いいえ」ボタンを押したら、
MsgBoxが消えるようにしたいので下記のマクロをどのようにすればいいかご教授いただけませんでしょうか。


参考のマクロです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から//
If Intersect(Target, Range("E6:AH20")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
If MsgBox("入力済みです。" & vbCrLf & "修正しますか?", vbYesNo) = vbNo Then
.Offset(1).Select
End If
End If
End With
End Sub 'この行まで//

「修正保護の確認のVBAについて」の質問画像

A 回答 (2件)

こんにちは!



前回投稿した者です。
実は投稿後質問文にあるようなことが気になっていました。

↓のコードに変更してみてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
If MsgBox("入力済みです。" & vbCrLf & "修正しますか?", vbYesNo) = vbNo Then
If .Offset(1) = "" Then
.Offset(1).Select
Else
.End(xlDown).Offset(1).Select
End If
End If
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

tom04様
お久しぶりです。
がんばっていますが中々一人前になりません。
実はこのマクロの構文は tom04さんがご回答されていたものを引用させていただきました。

If .Offset(1) = "" Then
End If
を加えた構文で見事できました。
本当にありがとうございます。
一層精進いたしますので今後ともご協力の程よろしくお願いいたします。

お礼日時:2016/09/23 14:47

以下のように、イベントを止めればよいと思います。



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("E6:AH20")) Is Nothing Or Target.Count > 1 Then Exit Sub
 With Target
  If .Value <> "" Then
   If MsgBox("入力済みです。" & vbCrLf & "修正しますか?", vbYesNo) = vbNo Then
    Application.EnableEvents = False '←ここ
    .Offset(1).Select
    Application.EnableEvents = True '←ここ
   End If
  End If
 End With
End Sub
    • good
    • 0
この回答へのお礼

早速ご回答誠にありがとうございます。
上手くできました。

これからのために十分参考にさせていただきます。
今後ともご指導賜りますようよろししくお願いします。

お礼日時:2016/09/23 14:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!