VBA-kod fungerar inte
Jag har följande VBA-kod:
Problem
Private Sub Worksheet_Change (ByVal Target As Range) Dim cRow As Integer Om Intersect (Target, Range ("R11: R20")) Ingenting Än så Avsluta Sub Om Target.Value = "F" Då ActiveSheet.Unprotect cRow = Target.Row Range (Celler (cRow, "T"), celler (cRow, "U")) Låst = True ActiveSheet.Protect End If If Target.Value = "T" eller Target.Value = "" Då ActiveSheet.Unprotect cRow = Target .Row Range (celler (cRow, "T"), celler (cRow, "U")) Låst = Falskt ActiveSheet.Protect-slut om slutdel
Vad jag behöver är att ClearContents för (cRow target.Row) i huvudfallet först innan det är låst.3
- Jag har Excel-ark för att beräkna övertid, innehåller flera rader för varje månad och arket är skyddat men tillåter användaren att mata in data till ett visst område (P11: P20, R11: X20) (Tillåt användaren att redigera intervallet).
- Räckvidden (R11: R20) är också rader med drop list-menyn med 4 värden (1, 2, 3, 4).
- Mitt fall: Om användaren bara valde värdet 3 eller 4 ENDAST i cellen (R15), måste jag blockera eller skydda intervallet (T15: U15) och om det med samma ark valdes 3 eller 4 värde i cell R19 för att skydda intervallet (T19: U19) och så vidare.
- Därför behöver jag om ett värde valts i en specifik cell för att skydda vissa intervall inom samma rad. Observera att användaren kan välja ett val eller flera val i samma ark.
Lösning
För din aktuella fråga antog jag att du vill rensa innehållet i kolumn T och U i mållinjen.
Private Sub Worksheet_Change (ByVal Target As Range) Dim cRow As Integer Om Intersect (Target, Range ("R11: R20")) Ingenting Än så Avsluta Sub Om Target.Value = "F" Då ActiveSheet.Unprotect cRow = Target.Row With Räckvidd (celler (cRow, "T"), celler (cRow, "U")). Klara innehåll. Låsta = Sann ände med ActiveSheet.Protect End If If Target.Value = "T" eller Target.Value = "" Då ActiveSheet .Unskydda cRow = Target.Row Range (celler (cRow, "T"), celler (cRow, "U")) Låst = Falskt ActiveSheet.Protect End If End Sub
Tack vare TrowaD för detta tips.