Я работаю со следующим кодом: Этот код делает для примера: если я ввожу любое значение в ячейку A1, ячейка B1 отображает отметку времени.Как отключить изменения в ячейке с помощью vba?
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("B1:B10"), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
With .Offset(0, 1)
.NumberFormat = "hh:mm AM/PM"
.Value = Now
End With
End If
Application.EnableEvents = True
End If
End With
End Sub
То, что я пытаюсь сделать сейчас, чтобы защитить/не редактируется от пользователя ячейки «B1: B10» когда-то отметка времени сделало макрос. Я google о том, как защитить, но мне сложно найти тот код, который я нашел. Может ли кто-нибудь помочь мне, как я создаю/вставляю этот код в свой исходный код?
Private Sub Worksheet_Change(ByVal Target As Range)
'set your criteria here
If Target.Column = 1 Then
'must disable events if you change the sheet as it will
'continually trigger the change event
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "You cannot do that!"
End If
End Sub
Или этот код:
'select the cell you want to be editable
Worksheets("Sheet1").Range("B2:C3").Locked = False
'then protect the entire sheet but still vba program can modify instead.
Worksheets("Sheet1").Protect UserInterfaceOnly:=True
Благодаря Kazjaw. Вот окончательный код.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Protect cell "B1:B10"
Worksheets("Sheet1").Cells.Locked = False
Worksheets("Sheet1").Range("B1:b10").Locked = True
Worksheets("Sheet1").Protect Password:="pass", UserInterfaceOnly:=Tru
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("B1:B10"), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
With .Offset(0, 1)
.NumberFormat = "hh:mm AM/PM"
.Value = Now
End With
End If
Application.EnableEvents = True
End If
End With
End Sub
Hi KazJaw, ваше предложение прекрасно работать для того, что я хочу. Спасибо, что ответили на мой вопрос. Я скоро отправлю свой код для целей документации. – Ysanki
Opps! Я почти забыл. Еще раз спасибо. – Ysanki