2017-04-18 11 views
0

私は非常に基本的な要件がありますが、これをコード化する方法はわかりません。 私が探しているのは、セルが> = 1の場合、特定の範囲( "J10:J1000")で変更を加えないことです。それが意味をなさないならば。変更を行わないでください - Worksheet_Change

したがって、J10からJ1000までのセルは0であれば任意の値に変更できますが、0より大きい場合は「Sorry!change can not happen」と表示してメッセージを表示します。

+2

データ検証? – pnuts

+0

ツールバーの[データ]に移動して[データ検証]をクリックし、そこにルールを設定します。ここにVBAは必要ありません。[詳細はこちら](https://support.office.com/en-us/article/Apply-data-validation-to-cells-29fecbcc-d1b9-42c1-9d76-eff3ce5f7249) – JNevill

答えて

0

試してみてください。 シートモジュールに次のコードを挿入します。

これを行うには、[シート]タブ - > [コードを表示]を右クリックし、開いているコードウィンドウに以下のコードを貼り付けます - >ブックをマクロ対応ワークブックとして保存します。

Dim oVal 
Private Sub Worksheet_Change(ByVal Target As Range) 
On Error GoTo SkipError 
Application.EnableEvents = False 
If Not Intersect(Target, Range("J10:J1000")) Is Nothing Then 
    If Target.CountLarge > 1 Then 
     Application.Undo 
    Else 
     If oVal > 0 Then 
      Application.Undo 
      Target.Offset(1, 0).Select 
      MsgBox "Sorry! you cannot change the cell content.", vbExclamation, "Change Not Allowed!" 
     End If 
    End If 
End If 
SkipError: 
Application.EnableEvents = True 
End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Target.CountLarge > 1 Then Exit Sub 
If Not Intersect(Target, Range("J10:J1000")) Is Nothing Then 
    oVal = Target.Value 
End If 
End Sub 
+0

Yuhooo。 .. 出来た !!! @sktneerありがとうございました。 – Naseer

+0

Naseerようこそ!それがうれしかった。私はあなたが答えをupvoteに逃したと思う。 :) – sktneer

+0

申し訳ありません!私はこのサイトでは新しいです。どうやってやるの? – Naseer

関連する問題