「Excel – VBA」複数行への入力時は処理を止める
こんにちは
先日、特定列へVBAで入力規則を入れ、入力都度判定させるため「Worksheet_Change」での書き方を記事にいたしました
御覧いただいたユーザーより、複数行同時ペーストした時や複数行同時削除した時にエラーになるので、そこもマクロ側でコントロールしたいと問合せいただきましたので、私の場合どうしているかを載せます
対象が複数行の時はマクロ無効
以下用途に合わせて3行目を変更してください
複数行:Target.Rows.Count > 1
複数列:Target.Columns.Count > 1
複数セル:Target.Count > 1
複数行へ同時処理操作をした場合は、マクロを無効にし、データを元(操作前)に戻してメッセージボックス表示いたします
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Then
Application.EnableEvents = False 'Worksheet_Change無効にする'
Application.Undo 'Ctrl + Zと同様、作業を元に戻します'
MsgBox "複数行セルへの処理はできません" & vbCrLf & "1セルまたは1行ずつ作業してください"
Application.EnableEvents = True 'Worksheet_Change有効に戻す'
Else
ここに前回記事の処理を書く、ここはコピーしないでください
End If
End Sub
よろしくどうぞっ
そもそも、1セルずつ入力して都度判定したいのではなく、複数セルコピペなどした後に、手動で一括判定したい方は以下の前回記事に載っている「③一括判定」の方法をご利用ください
「Excel – VBA」セルの位置を取得して一覧をメッセージボックス表示したい
こんにちは 佐川急便のe飛伝2がe飛伝3へ移行するにあたり、使い辛いとの声をよく耳にします これを機にcsvインポートに切り替えたいけど、入力ミスが多発してしまう と…