Petek, 18 marec 2022
  3 odgovori
  9.7 tisoč obiskov
0
Glasov
Razveljavi
Postavljam preglednico za podatke trendov za analitično testiranje kemičnih izdelkov. Želim, da se vsaka vrstica podatkov zaklene, ko pregledovalec preveri prepis omenjenih podatkov. Lahko zaklenem eno vrstico s to kodo v VBA:

Zasebni poddelovni list_Spremeni (ByVal Target As Range)
Če je Range("X3") = "Ne" Potem
Obseg("B3:W3").Zaklenjeno = False
ElseIf Range("X3") = "Da" Potem
Obseg("B3:W3").Zaklenjeno = Res
Konec Če
End Sub

Stolpec X vsebuje spustni seznam z dvema možnostma »Da« in »Ne«. Želel bi, da se vsaka vrstica podatkov, ko je dodana na list, zaklene, ko je pregledovalec v tem stolpcu izbral da, da zagotovimo, da preteklih podatkov ne bo prišlo do nenamernih sprememb. Ali je to mogoče brez ponavljanja kode about za vsako vrstico v nedogled?
Pred 2 leti
·
#2529
Sprejet odgovor
1
Glasov
Razveljavi
Živjo StephanieS,

Poskusite s spodnjo kodo, če imate dodatna vprašanja, me vprašajte.

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
Pred 2 leti
·
#2522
0
Glasov
Razveljavi
Potrebujem ga tudi, da lahko spremenim stanje teh celic iz odklenjenih v zaklenjenih, medtem ko je preglednica zaščitena, sicer je ta funkcija neuporabna.
Pred 2 leti
·
#2529
Sprejet odgovor
1
Glasov
Razveljavi
Živjo StephanieS,

Poskusite s spodnjo kodo, če imate dodatna vprašanja, me vprašajte.

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
Pred 2 leti
·
#2531
0
Glasov
Razveljavi
Najlepša hvala! Ta koda je delovala odlično. Še vedno sem zelo nov v VBA, zato resnično cenim vašo pomoč! :)
  • Stran:
  • 1
Za to objavo še ni odgovorov.