By Stephanie S w piątek 18 marca 2022 r
Opublikowany w przewyższać
Odpowiedzi 3
Lubi 0
odwiedzajacy 9.9 tysięcy
Głosów 0
Tworzę arkusz kalkulacyjny z danymi trendów na potrzeby testów analitycznych produktów chemicznych. Chciałbym, aby każda linia danych została zablokowana po zweryfikowaniu transkrypcji tych danych przez recenzenta. Jestem w stanie zablokować pojedynczą linię za pomocą tego kodu w VBA:

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli Zakres("X3") = "Nie" Wtedy
Range("B3:W3").Zablokowany = Fałsz
ElseIf Range("X3") = "Tak" Zatem
Range("B3:W3").Zablokowany = Prawda
End If
End Sub

Kolumna X zawiera listę rozwijaną z dwiema opcjami „Tak” i „Nie”. Chciałbym, aby każda linia danych dodawana do arkusza była blokowana po wybraniu przez recenzenta w tej kolumnie opcji „tak”, aby mieć pewność, że w poprzednich danych nie zostaną wprowadzone żadne niezamierzone zmiany. Czy jest to możliwe bez konieczności ciągłego powtarzania kodu about dla każdej linii?
Cześć StephanieS,

Wypróbuj poniższy kod. Jeśli masz dalsze pytania, nie wahaj się mnie zapytać.

Amanda

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 lat temu
·
0 Lubi
·
1 głosów
·
Komentarze 0
·
Potrzebuję go również, aby móc zmienić status tych komórek z odblokowanych na zablokowane, podczas gdy arkusz kalkulacyjny jest chroniony, w przeciwnym razie ta funkcja będzie bezużyteczna.
·
2 lat temu
·
0 Lubi
·
0 głosów
·
Komentarze 0
·
Bardzo dziękuję! Ten kod działał idealnie. Wciąż jestem bardzo nowy w VBA, więc naprawdę doceniam twoją pomoc!
·
2 lat temu
·
0 Lubi
·
0 głosów
·
Komentarze 0
·
Wyświetl pełny post