VBA kodas neveikia

Turiu šį VBA kodą:

Problema

 Privatus sub darbas_Keisti (ByVal taikinys kaip diapazonas) Išmatuokite kaip visišką, jei susikerta (tikslai, diapazonas („R11: R20“)), tada nieko neišeiti, jei Target.Value = "F", tada ActiveSheet.Unprotect cRow = Target.Row Range (Ląstelės (cRow, "T"), ląstelės (cRow, "U")) Užrakinta = True ActiveSheet.Protect End Jei jei Target.Value = "T" arba Target.Value = "" Tada ActiveSheet.Unprotect cRow = Tikslinė .Row Range (ląstelės (cRow, "T"), ląstelės (cRow, "U")) Užrakinta = False ActiveSheet.Protect End Jei baigsite 

Man reikia, kad „ClearContents“ („CRow target.Row“) būtų rodoma didžiosiomis raidėmis, prieš tai užrakinta.

  • Aš turiu „Excel“ lapą viršvalandžių skaičiavimui, apima keletą eilučių kiekvienam mėnesiui, o lapas yra apsaugotas, bet leidžia vartotojui įvesti duomenis į tam tikrą intervalą (P11: P20, R11: X20) (leisti vartotojui redaguoti diapazoną).
  • Be to, diapazonas (R11: R20) yra eilutės su 4 reikšmių sąrašo meniu (1, 2, 3, 4).
  • Mano atvejis: Pavyzdžiui, jei naudotojas pasirinko tik 3 arba 4 vertę vien tik ląstelėje (R15), turiu blokuoti arba apsaugoti diapazoną (T15: U15) ir tada, jei tuo pačiu lapu pasirinkta 3 arba 4 reikšmė ląstelėje R19 apsaugoti diapazoną (T19: U19) ir pan.
  • Todėl reikia tam tikros vertės, pasirinktos tam tikroje ląstelėje, kad būtų apsaugoti tam tikri intervalai toje pačioje eilutėje. Atkreipkite dėmesį, kad vartotojas gali pasirinkti vieną pasirinkimą arba daug pasirinkimą tame pačiame lape.

Sprendimas

Dabartinės užklausos atveju maniau, kad norite išvalyti tikslinės eilutės T ir U stulpelių turinį.

 Privatus sub darblapis_pakeisti (ByVal Target As Range) Dim cRow Kaip Integer Jei susikerta (Target, Range ("R11: R20")) Nieko Tada Exit Sub Jei Target.Value = "F", tada ActiveSheet.Unprotect cRow = Target.Row with Diapazonas (ląstelės (cRow, "T"), ląstelės (cRow, "U")) .ClearContents .Locked = True End su ActiveSheet.Protect End Jei Jei Target.Value = "T" arba Target.Value = "" Tada ActiveSheet .Unprotect cRow = Target.Row Range (ląstelės (cRow, "T"), ląstelės (cRow, "U")) Užrakinta = False ActiveSheet.Protect End Jei baigsite 

Ačiū TrowaD už šį patarimą.

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai