금요일 18 월 2022
  3 답글
  9.6K 방문
0
투표
취소
저는 화학 제품의 분석 테스트를 위한 데이터 추세를 나타내는 스프레드시트를 설정하고 있습니다. 검토자가 해당 데이터의 기록을 확인한 후 각 데이터 줄을 잠그고 싶습니다. VBA에서 다음 코드를 사용하여 한 줄을 잠글 수 있습니다.

개인 하위 Worksheet_Change (범위로 ByVal 대상)
Range("X3") = "아니요"인 경우
범위("B3:W3").Locked = False
ElseIf Range("X3") = "예" Then
범위("B3:W3").Locked = True
END IF
최종 하위

X열에는 "예"와 "아니요"가 두 가지 옵션으로 포함된 드롭다운 목록이 포함되어 있습니다. 시트에 추가된 데이터의 각 줄을 검토자가 이 열에서 예를 선택하면 잠기도록 하여 이전 데이터에 의도하지 않은 변경이 이루어지지 않도록 하고 싶습니다. 각 줄마다 정보 코드를 무한정 반복하지 않고도 이것이 가능합니까?
허용 된 답변
1
투표
취소
안녕하세요, StephanieS님,

아래 코드를 사용해 보시고, 더 궁금한 점이 있으시면 언제든지 문의해 주세요.

아만다

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPassword As String
Dim xRgAddress As String
Dim xLockRgAddress As String
Dim Row As Integer

xPassword = "123456" 'Please replace 123456 with the password that protects the spreadsheet.
On Error Resume Next

If (Target.Column <> 24) Then
Exit Sub
End If

Row = Target.Row


If Target = "Yes" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
ElseIf Target = "No" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If


End Sub
2 년 전
·
#2522
0
투표
취소
또한 스프레드시트가 보호되는 동안 이러한 셀의 상태를 잠금 해제에서 잠금으로 변경할 수 있어야 합니다. 그렇지 않으면 이 기능은 쓸모가 없습니다.
허용 된 답변
1
투표
취소
안녕하세요, StephanieS님,

아래 코드를 사용해 보시고, 더 궁금한 점이 있으시면 언제든지 문의해 주세요.

아만다

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPassword As String
Dim xRgAddress As String
Dim xLockRgAddress As String
Dim Row As Integer

xPassword = "123456" 'Please replace 123456 with the password that protects the spreadsheet.
On Error Resume Next

If (Target.Column <> 24) Then
Exit Sub
End If

Row = Target.Row


If Target = "Yes" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
ElseIf Target = "No" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If


End Sub
2 년 전
·
#2531
0
투표
취소
매우 감사합니다! 해당 코드는 완벽하게 작동했습니다. 저는 아직 VBA를 처음 접했기 때문에 도움을 주셔서 정말 감사합니다! :)
  • 페이지 :
  • 1
이 게시물에 대한 답변이 없습니다.