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

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

열 X에는 "예"와 "아니요" 두 가지 옵션이 있는 드롭다운 목록이 있습니다. 검토자가 이 열에서 예를 선택하면 시트에 추가될 때 데이터의 각 행을 잠가서 과거 데이터에 의도하지 않은 변경이 발생하지 않도록 하고 싶습니다. 각 줄에 대해 about 코드를 무기한 반복하지 않고도 이것이 가능합니까?
8 개월 전
·
#2529
허용 된 답변
1
투표
취소
안녕하세요 스테파니님,

아래 코드를 시도해 보시고 더 궁금한 사항이 있으시면 주저하지 마시고 저에게 질문해 주십시오.

아만다

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
8 개월 전
·
#2522
0
투표
취소
또한 스프레드시트가 보호되는 동안 이러한 셀의 상태를 잠금 해제에서 잠금으로 변경할 수 있어야 합니다. 그렇지 않으면 이 기능이 쓸모가 없습니다.
8 개월 전
·
#2529
허용 된 답변
1
투표
취소
안녕하세요 스테파니님,

아래 코드를 시도해 보시고 더 궁금한 사항이 있으시면 주저하지 마시고 저에게 질문해 주십시오.

아만다

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
8 개월 전
·
#2531
0
투표
취소
정말 고맙습니다! 그 코드는 완벽하게 작동했습니다. 저는 아직 VBA를 처음 접하기 때문에 여러분의 도움에 진심으로 감사드립니다! :)
  • 페이지 :
  • 1
이 게시물에 대한 답변이 없습니다.