Kod VBA tidak berfungsi

Saya mempunyai kod VBA berikut:

Isu

 Sasaran Sub Kerja Prasyarat_Change (ByVal Target As Range) Dimatap Sebagai Integer Jika Intersect (Sasaran, Julat ("R11: R20")) Adakah Tiada Kemudian Keluar Sub Jika Target.Value = "F" Kemudian ActiveSheet.Unprotect cRow = Target.Row Range = Cell (cRow, "T"), Sel (cRow, "U")) Dikunci = Benar ActiveSheet.Protect End Jika Jika Target.Value = "T" Atau Target.Value = "" Kemudian ActiveSheet.Unprotect cRow = Julat Row (Sel (cRow, "T"), Sel (cRow, "U")). Dikunci = Palsu ActiveSheet.Protect End If End Sub 

Apa yang saya perlukan ialah ClearContents untuk (target target.Row) dalam huruf besar terlebih dahulu sebelum dikunci.3

  • Saya mempunyai lembaran Excel untuk mengira lebih masa, termasuk beberapa baris untuk setiap bulan, dan lembaran dilindungi tetapi membenarkan pengguna memasuki data ke dalam beberapa julat tertentu (P11: P20, R11: X20) (Benarkan pengguna mengedit julat).
  • Juga, Julat (R11: R20) adalah baris dengan menu senarai drop 4 nilai (1, 2, 3, 4).
  • Kes saya: Sebagai contoh, jika pengguna memilih sama ada nilai 3 atau 4 SAHAJA di dalam sel (R15) saya perlu menghalang atau melindungi rangkaian (T15: U15), dan kemudian dengan helaian yang sama memilih 3 atau 4 nilai dalam sel R19 untuk melindungi rangkaian (T19: U19) dan sebagainya.
  • Oleh itu, saya perlukan jika sesetengah nilai dipilih dalam sel tertentu untuk melindungi beberapa julat dalam baris yang sama. Sila ambil perhatian bahawa pengguna boleh memilih satu pilihan atau pelbagai pilihan dalam helaian yang sama.

Penyelesaian

Untuk pertanyaan semasa anda, saya mengandaikan anda ingin membersihkan kandungan lajur T dan U pada baris sasaran.

 Sub Rangkaian Kerja Pribadi (Dimensi Target ByVal) Dimatikan Sebagai Integer Jika Intersect (Sasaran, Julat ("R11: R20")) Adakah Tiada Kemudian Keluar Sub Jika Target.Value = "F" Kemudian ActiveSheet.Unprotect cRow = Target.Row With Rangkaian (Sel (cRow, "T"), Sel (cRow, "U")) .ClearContents.Locked = End True Dengan ActiveSheet.Protect End Jika If Target.Value = "T" Atau Target.Value = "" Then ActiveSheet .Unprotect cRow = Target.Row Range (Sel (cRow, "T"), Sel (cRow, "U")). Dikunci = Palsu ActiveSheet.Protect End If End Sub 

Terima kasih kepada TrowaD untuk tip ini.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama