Note: The other languages of the website are Google-translated. Back to English
English English

วิธีล็อคหรือปลดล็อกเซลล์ตามค่าในเซลล์อื่นใน Excel

ในบางกรณีคุณอาจต้องล็อกหรือปลดล็อกเซลล์ตามค่าในเซลล์อื่น ตัวอย่างเช่นคุณต้องปลดล็อกช่วง B1: B4 หากเซลล์ A1 มีค่า "ยอมรับ" และจะถูกล็อกหากเซลล์ A1 มีค่า "ปฏิเสธ" คุณจะทำอย่างไรเพื่อให้บรรลุ? บทความนี้ช่วยคุณได้

ล็อกหรือปลดล็อกเซลล์ตามค่าในเซลล์อื่นด้วยรหัส VBA


ล็อกหรือปลดล็อกเซลล์ตามค่าในเซลล์อื่นด้วยรหัส VBA

รหัส VBA ต่อไปนี้สามารถช่วยคุณล็อกหรือปลดล็อกเซลล์ตามค่าในเซลล์อื่นใน Excel

1. คลิกขวาที่แท็บแผ่นงาน (แผ่นงานที่มีเซลล์ที่คุณต้องล็อกหรือปลดล็อกตามค่าในเซลล์อื่น) แล้วคลิก ดูรหัส จากเมนูคลิกขวา

2. จากนั้นคัดลอกและวางรหัส VBA ต่อไปนี้ลงในหน้าต่างรหัส

รหัส VBA: ล็อกหรือปลดล็อกเซลล์ตามค่าในเซลล์อื่น

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") = "Accepting" Then
        Range("B1:B4").Locked = False
    ElseIf Range("A1") = "Refusing" Then
        Range("B1:B4").Locked = True
    End If
End Sub

3 กด อื่น ๆ + Q พร้อมกันเพื่อปิดไฟล์ Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

จากนี้ไปเมื่อคุณป้อนค่า“ การยอมรับ” ลงในเซลล์ A1 ช่วง B1: B4 จะถูกปลดล็อก

เมื่อป้อนค่า“ การปฏิเสธ” ลงในเซลล์ A1 ช่วงที่ระบุ B1: B4 จะถูกล็อกโดยอัตโนมัติ


บทความที่เกี่ยวข้อง:


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office / Excel 2007-2019 และ 365 รองรับทุกภาษา ใช้งานง่ายในองค์กรหรือองค์กรของคุณ ทดลองใช้ฟรี 30 วันเต็ม รับประกันคืนเงิน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (50)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
จะล็อก/ปลดล็อกเซลล์ตัวแปรได้อย่างไร เช่น เมื่อเซลล์เป็น [=INDEX(A16:L35,MATCH(W5,A16:A35,0),MATCH("PAY",A16:L16,0))]
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการคำสั่ง VBA ง่าย ๆ ซึ่งฉันไม่สามารถเข้าใจได้โปรดช่วยด้วย
หากเซลล์ A1 เป็น Balnk แสดงว่าเซลล์ A2 ถูกล็อกและหากเซลล์ A1 มีค่าใดๆ เซลล์ A2 จะถูกปลดล็อก
ในทำนองเดียวกัน หากเซลล์ A2 ว่างเปล่า แสดงว่าเซลล์ A3 ถูกล็อก และหากเซลล์ A2 มีค่าใดๆ เซลล์ A3 จะถูกปลดล็อก
และอื่น ๆ ได้มากเท่าที่ต้องการในส่วนใด ๆ ของแผ่นงาน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันกำลังพยายามทำสิ่งนี้ให้สำเร็จ แต่ได้รับข้อผิดพลาดที่ VBA ไม่สามารถตั้งค่าคุณสมบัติ Locked ของคลาส Range หากแผ่นงานได้รับการป้องกัน การยกเลิกการป้องกันแผ่นงานจะทำให้เซลล์ถูกล็อค วิธีการได้รับรอบนี้? ขอบคุณสำหรับความช่วยเหลือใด ๆ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณแก้ปัญหาหรือไม่? ผมมีปัญหาเดียวกัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
บันทึกถึงที่รัก
โปรดลองใช้โค้ด VBA ด้านล่าง

แผ่นงานย่อยส่วนตัว_Activate()
ถ้าไม่ใช่ ActiveSheet.ProtectContents แล้ว
พิสัย("A1") ล็อคไว้ = เท็จ
Range("B1:B4") .Locked = False
End If
ย่อยสิ้นสุด
แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRg เป็นช่วง, xRgA เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
Application.EnableEvents = เท็จ
ตั้งค่า xRg = ช่วง ("B1:B4")
ตั้งค่า xRgA = ช่วง ("A1")
ถ้า Intersect(Target, xRg).Address <> Target.Address _
หรือ xRgA = "ยอมรับ" แล้ว
Application.EnableEvents = จริง
ออกจาก Sub
อื่นถ้า ActiveSheet.ProtectContents _
และ Intersect(Target, xRg) = Target _
และ xRgA.Value = "ปฏิเสธ" แล้ว
xRgA. เลือก
End If
Application.EnableEvents = จริง
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณจะต้องใช้ส่วนต่อประสานในเวิร์กบุ๊ก ดังนั้นเมื่อคุณเปิดไฟล์ ไฟล์จะปกป้องชีตแต่อนุญาตให้มาโครทำการเปลี่ยนแปลงได้

Private Sub Workbook_Open() 'สิ่งนี้จะเข้าสู่ "ThisWorkbook"

แผ่นงาน("เครื่องมือการสั่งซื้อ").ปกป้องรหัสผ่าน:="Pwd", UserInterFaceOnly:=True

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียนคุณมด
รหัส VBA ด้านล่างสามารถช่วยคุณแก้ปัญหานี้ได้ ขอบคุณสำหรับความคิดเห็นของคุณ.

แผ่นงานย่อยส่วนตัว_Activate()
ถ้าไม่ใช่ ActiveSheet.ProtectContents แล้ว
พิสัย("A1") ล็อคไว้ = เท็จ
Range("B1:B4") .Locked = False
End If
ย่อยสิ้นสุด
แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRg เป็นช่วง, xRgA เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
Application.EnableEvents = เท็จ
ตั้งค่า xRg = ช่วง ("B1:B4")
ตั้งค่า xRgA = ช่วง ("A1")
ถ้า Intersect(Target, xRg).Address <> Target.Address _
หรือ xRgA = "ยอมรับ" แล้ว
Application.EnableEvents = จริง
ออกจาก Sub
อื่นถ้า ActiveSheet.ProtectContents _
และ Intersect(Target, xRg) = Target _
และ xRgA.Value = "ปฏิเสธ" แล้ว
xRgA. เลือก
End If
Application.EnableEvents = จริง
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี

เป็นไปได้ไหมที่จะให้ VBA นี้ล็อกเซลล์หนึ่งชุด/ปลดล็อกอีกชุดหนึ่งโดยอิงตามสิ่งนี้ ตัวอย่างเช่น ช่วง B1:B4 ถูกปลดล็อก และ C1:C4 ถูกล็อกเพื่อ "ยอมรับ" จากนั้น B1:B4 จะถูกล็อก และ C1:C4 ปลดล็อกเพื่อ "ปฏิเสธ"


ขอบคุณ,
คริสเตียน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียนคริสเตียน
แผ่นงานของคุณได้รับการคุ้มครองหรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
โปรดมีคนช่วยฉันด้วยสิ่งต่อไปนี้
ฉันต้องการแทรกรูปภาพของนักเรียนในชีตเดียว ปรากฏในชีตอื่นตามชื่อของพวกเขา
เพื่อสร้างเครื่องบินนำทางเพื่อช่วยเหลือผู้ใช้
ในการกำหนดชีตเฉพาะให้กับผู้ใช้
เพื่อสร้างอินเทอร์เฟซสำหรับสมุดงาน
เพื่อสร้างหน้าเข้าสู่ระบบ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ลีโอที่รัก
คำถามใดๆ เกี่ยวกับ Excel โปรดอย่าลังเลที่จะโพสต์ในฟอรัมของเรา: https://www.extendoffice.com/forum.html.
คุณจะได้รับการสนับสนุนเพิ่มเติมเกี่ยวกับ Excel จากผู้เชี่ยวชาญ Excel ของเรา
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,

ฉันได้ลองใช้รหัสของคุณและแก้ไขเล็กน้อยแล้ว แต่ฉันไม่รู้ว่าฉันทำอะไรผิดที่นี่

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Range("A40") <> "" แล้ว
พิสัย("D40:E40") ล็อกไว้ = เท็จ
ElseIf Range("A40") = "" แล้ว
พิสัย("D40:E40") ล็อกไว้ = True
End If
ย่อยสิ้นสุด


ความคิดของฉันเกี่ยวกับมันคือถ้าไม่มีอะไรอยู่ในนั้น (A40) จากนั้นฉันต้องการล็อคโดย VBA ถ้า A40 มีบางอย่าง ฉันต้องการให้มันถูกปลดล็อค ฉันหวังว่าคุณจะเห็นความรู้สึกของมัน


ขอแสดงความนับถือ Kristoffer
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอให้เป็นวันที่ดี,
ไม่มีอะไรผิดปกติกับรหัสของคุณ มันทำงานได้ดีสำหรับฉัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี. ฉันก็ไม่สามารถรับรหัสนี้เพื่อใช้งานได้ มันไม่ทำอะไรเลย เหมือนไม่มีโค้ดเลย?? ฉันยังใหม่กับ VBA และมีความเข้าใจพื้นฐานอยู่แล้ว รหัสนี้ทำงานตามที่เป็นอยู่หรือต้องเพิ่มข้อมูลเข้าไปด้วยเพื่อให้ทำงานได้หรือไม่ หรือเปลี่ยนเป็นมาโคร (ซึ่งฉันไม่เข้าใจจริงๆ ว่าทำไม เพราะนั่นเป็นการบันทึกคำสั่งตามความเข้าใจของฉัน)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสจะเป็นอย่างไรหากฉันต้องการล็อคเซลล์ E1, E2, E3 .............. สำหรับข้อความเฉพาะ (ให้พูดว่า "P") บนเซลล์ B1, B2, B3... .............ด้วยความเคารพ.

ขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
โปรดลองสคริปต์ VBA ด้านล่าง

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Count = 1 แล้ว
ถ้า Target.Address = Range("A1")).Address And Target.Value = "A" แล้ว
ช่วง ("B1") ล็อค = True
ElseIf Target.Address = Range ("A2") .Address และ Target.Value = "A" แล้ว
ช่วง ("B2") ล็อค = True
ElseIf Target.Address = Range ("A3") .Address และ Target.Value = "A" แล้ว
ช่วง ("B3") ล็อค = True
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี! ต้องการคำแนะนำ
มีวิธีใดบ้างที่จะไม่อนุญาตให้อัปเดตเซลล์เว้นแต่จะเป็นไปตามเงื่อนไขในเซลล์อื่น
ตัวอย่าง: หากเซลล์ A ไม่ได้รับการอัปเดต จะไม่อนุญาตให้ฉันเปลี่ยนค่าของเซลล์ B ให้เสร็จสมบูรณ์

ขอขอบคุณข้อเสนอแนะ
ขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน มาร์กี้
โปรดลองรหัส VBA ด้านล่าง

Dim PreVal เป็นสตริง
Dim NextVal เป็นสตริง
แผ่นงานย่อยส่วนตัว_Activate()
PreVal = ช่วง ("A1")
NextVal = ช่วง ("A1")
ย่อยสิ้นสุด
Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า (Target.Count = 1) และ (Target.Address = "$A$1") แล้ว
NextVal = ช่วง ("A1")
End If
ย่อยสิ้นสุด
แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
ถ้า Target.Count = 1 แล้ว
ถ้า Target.Address = "$A$1" แล้ว
PreVal = ช่วง ("A1")
ElseIf (Target.Address = "$B$1") แล้ว
ถ้า PreVal = NextVal แล้ว
Application.EnableEvents = เท็จ
ช่วง("A1") เลือก
Application.EnableEvents = จริง
End If
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ใครสามารถแก้ไขสิ่งนี้ได้กรุณา >>>

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
สำหรับ i = 7 ต้องการ 100
ถ้า Range("Cells(D, i)") = "Loan" แล้ว
Range("Cells(V, i):Cells(X, i)")).Locked = True
ElseIf Range("Cells(D, i)") = "ออมทรัพย์" แล้ว
Range("Cells(Q, i):Cells(U, i)")).Locked = True
Range("Cells(W, i):Cells(X, i)")).Locked = True
ElseIf Range("Cells(D, i)") = "ShareCap" จากนั้น
Range("Cells(Q, i):Cells(U, i)")).Locked = True
Range("Cells(V, i)")).Locked = True
End If
ต่อไปฉัน
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี! ใครสามารถช่วยฉันได้บ้าง ฉันต้องล็อก/หยุดเซลล์ เซลล์นั้นเชื่อมโยงกับเซลล์อื่นและมีค่าที่เปลี่ยนแปลงทุกนาที สิ่งที่ต้องทำคือเก็บค่าไว้เป็นนาที/ชั่วโมงที่แน่นอน ฉันจะทำอย่างนั้นได้อย่างไรโดยไม่คัดลอกและวางเป็นค่า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มิร่าที่รัก
ขออภัย ไม่สามารถช่วยในเรื่องนี้ คุณสามารถโพสต์คำถามของคุณในฟอรั่มของเรา: https://www.extendoffice.com/forum.html เพื่อรับการสนับสนุน Excel เพิ่มเติมจากผู้เชี่ยวชาญของเรา
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันยังใหม่กับเรื่องนี้
ฉันพยายามรวมระบบการออกใบแจ้งหนี้ใน excel
ฉันสร้าง 3 แผ่น
1. เทมเพลตใบแจ้งหนี้ (Invoice)- เป็นเพียงใบแจ้งหนี้ทั่วไปที่ส่งถึงตัวแทนของฉันทุกสัปดาห์

2. แผ่นข้อมูล (แผ่นข้อมูล) ให้ถูกต้อง - โดยที่ใบกำกับสินค้าสามารถอ่านชื่อบริษัทที่อยู่ ฯลฯ ดังนั้นหากมีการเปลี่ยนแปลงใด ๆ ใบแจ้งหนี้จะได้รับการอัพเดตโดยอัตโนมัติ

3. แท็บปฏิทิน (ปฏิทิน 2018) ให้ถูกต้อง - ที่อ้างอิงในเทมเพลตใบแจ้งหนี้ และใส่วันที่และหมายเลขใบแจ้งหนี้ที่สอดคล้องกันในใบแจ้งหนี้จริง

สิ่งที่ฉันต้องการจะทำ
แท็บปฏิทินจะเป็นหน้าหลักของฉัน ฉันเพิ่มเซลล์แบบเลื่อนลงสถานะสำหรับแต่ละสัปดาห์พร้อมตัวเลือก "ใช้งานอยู่" และ "ปิด" ฉันต้องการล็อกแท็บ "ใบแจ้งหนี้" ทั้งหมด หากเซลล์ที่เกี่ยวข้องถูกตั้งค่าเป็น "ปิด"

ฉันหวังว่าพวกคุณจะเข้าใจสิ่งที่ฉันพยายามทำ
ขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
อันโด เวเรสที่รัก
รหัส VBA ด้านล่างสามารถช่วยคุณได้ โปรดวางรหัสลงในหน้าต่างรหัสแผ่นงานของปฏิทิน 2018 เปลี่ยน A1 เป็นเซลล์แบบเลื่อนลง ขอขอบคุณ.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRg เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
ตั้งค่า xRg = อินเตอร์เซก(เป้าหมาย, พิสัย("A1"))
ถ้า xRg ไม่มีอะไร ให้ออกจาก Sub
ถ้า Target.Validation.Type >= 0 แล้ว
ถ้า Target.Value = "ปิด" แล้ว
ชีต("เอกสารข้อมูล").Protect
ElseIf xRg.Value = "ใช้งานอยู่" แล้ว
ชีต("เอกสารข้อมูล").Unprotect
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันเตรียมการจัดการสต็อคคลังสินค้าในเทมเพลต excel ในการส่งมอบสต็อค ฉันต้องออกเกทพาส ฉันต้องการผ่านเกทแต่ละอัน ข้อมูลที่เกี่ยวข้องจะได้รับการอัปเดตในหน้าตรวจสอบสต็อกรายวัน ด้วยการเปลี่ยนเกทพาสหมายเลขซีเรียล แถวจะถูกล็อคและถัดไปจะเต็ม
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอให้เป็นวันที่ดี,
จะดีมากถ้าคุณสามารถอัปโหลดสมุดงานของคุณได้ที่นี่ ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณช่วยแนะนำฉันเกี่ยวกับสิ่งผิดปกติที่นี่ได้ไหม ขอบคุณล่วงหน้า.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Range("K:K") = "OVER STOCK" แล้ว
Range("S:S")).Locked = True
ElseIf Range("K:K") = "SLOW MOVING" จากนั้น
Range("S:S")).Locked = True
ElseIf Range("K:K") = "ปกติ" แล้ว
Range("S:S")).Locked = False
ElseIf Range("K:K") = "SHORTAGE" จากนั้น
Range("S:S")).Locked = False
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณช่วยแนะนำฉันเกี่ยวกับวิธีการแก้ไขนี้ได้ไหม ขอบคุณล่วงหน้า.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Range("A:A") = "SLOW MOVING" แล้ว
Range("B:B")).Locked = True
ElseIf Range("A:A") = "OVER STOCK" แล้ว
Range("B:B")).Locked = True
ElseIf Range("A:A") = "ปกติ" แล้ว
Range("B:B")).Locked = False
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ไม่ใช่ผู้เชี่ยวชาญ VB ฉันจะบอกว่าคุณมี "Elseif" มากเกินไป - หากคุณเปลี่ยนพวกเขาทั้งหมดเป็น IF ยกเว้นอันสุดท้ายหวังว่าจะใช้งานได้
โดยทั่วไป ถ้า X ทำเช่นนี้ ถ้า Y ทำเช่นนี้ ถ้า Z ทำเช่นนี้ ถ้าไม่มีสิ่งเหล่านั้น - ทำเช่นนี้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสจะเป็นอย่างไรถ้าฉันต้องการล็อคบล็อกของเซลล์ (แถว 6, 7 และ 8/ตัวอักษร D ถึง U รวมถึงเซลล์ F5 และ J5) และให้ปลดล็อกเมื่อฉันใส่ "X" ลงในเซลล์ E5 ขอบคุณล่วงหน้า!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี MitchyII,
คุณหมายถึงกลุ่มเซลล์ที่ระบุถูกล็อกด้วยตนเองล่วงหน้าและต้องการปลดล็อกโดยการพิมพ์ "X" ในเซลล์ E5 หรือไม่
หากลบ "X" ออกจากเซลล์ E5 คุณต้องการล็อกช่วงอีกครั้งหรือไม่
ฉันต้องการรายละเอียดเพิ่มเติมเกี่ยวกับปัญหา
ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มิทชิลล์ (หรือใครก็ตาม) สร้างจากคริสตัล ฉันได้ล็อกเซลล์ทั้งหมดด้วยตนเองและอิงตามข้อมูลในคอลัมน์ G ฉันต้องการให้เซลล์เหล่านั้นล็อกหรือปลดล็อกต่อไป ตัวอย่างเซลล์ในคอลัมน์ H ควรปลดล็อกก็ต่อเมื่อวาง "c/p" ไว้ในเซลล์ก่อนหน้าในคอลัมน์ G
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เป็นไปได้ไหมที่จะล็อกเซลล์เมื่อถึงค่าที่กำหนด?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี คุณช่วยกรุณาตรวจสอบสาเหตุที่มันไม่ทำงานได้ไหม

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Range("A3:A37")).Value <> "" แล้ว
ช่วง("B3:B37") ล็อค = True
ElseIf Range("A3:A37") = "" แล้ว
พิสัย("B3:B37") ล็อคอยู่ = เท็จ
End If

ถ้า Range("B3:B37")).Value <> "" แล้ว
ช่วง("A3:A37") ล็อคอยู่ = True
ElseIf Range("B3:B37") = "" แล้ว
พิสัย("A3:A37") ล็อคอยู่ = เท็จ
End If

ย่อยสิ้นสุด


ขอบคุณล่วงหน้า!!!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Hi
ฉันเพิ่งลองใช้รหัสด้านบน
และมันบอกว่าข้อผิดพลาดประเภท 13 เมื่อฉันพยายามใช้
คุณช่วยฉันด้วยเรื่องนี้ได้ไหม

ขอขอบคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
คุณใช้ Excel เวอร์ชันใดอยู่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
hi

ถ้าฉันต้องการล็อคเซลล์ในแผ่นที่ 2 (เซลล์ C4) ตามการอ้างสิทธิ์จากแผ่นที่ 1 (เซลล์ C1)
ถ้า "ไม่" ในแผ่นที่ 1 C4; แผ่นที่ 2 ต้องล็อกและต้องโอนค่าจากแผ่นที่ 1 C4
ไปยังแผ่นที่ 2 C4

ถ้า "ใช่" ในแผ่นที่ 1 ฉันต้องพิมพ์เซลล์ในแผ่นที่ 2 . ได้

ขอบคุณ Benthe
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีโปรดใครก็ได้ช่วยฉันเกี่ยวกับรหัส VBA

ถ้าฉันเลือกจากดรอปดาวน์ในเซลล์ Range(A1:A1000) "abc" ก็ไม่ล็อค Range(D1:D1000) ถึง (F1:F1000)



ถ้าฉันเลือกจากดรอปดาวน์ในเซลล์ Range(A1:A1000) "abc" ก็ไม่ล็อค Range(D1:D1000) ถึง (F1:F1000)



ถ้าฉันเลือกจากดรอปดาวน์ในเซลล์ Range(A1:A1000) "abc" ให้ล็อก Range(D1:D1000) เป็น (F1:F1000)



เช่นเซลล์ A1 ตามลำดับสำหรับ D1 ถึง F1



A2 สำหรับ D2 ถึง F2
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันคัดลอกทุกอย่างจากด้านบนลงในแผ่นงาน มันใช้งานได้สักครู่และตอนนี้ฉันได้รับข้อผิดพลาด 'ไม่สามารถตั้งค่าคุณสมบัติล็อคของคลาสช่วง' ฉันยังเปิดแผ่นงานใหม่ทั้งหมดและคัดลอกตัวอย่างของคุณทุกคำ มีความคิดว่าเกิดอะไรขึ้น?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,

ฉันต้องการความโปรดปรานของคุณ เมื่อฉันเลือก No option จากเซลล์ ฉันต้องการให้คอลัมน์ด้านล่างถูกล็อค/เป็นสีเทา

เป็นไปได้ไหม? ลองสูตรนี้แล้วไม่ได้ผล

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)

ถ้า Range("D90") = "ใช่" แล้ว

Range("C94:F104") .Locked = False

ElseIf Range("D90") = "ไม่" แล้ว

ช่วง("C94:F104") ล็อคไว้ = True

End If

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี สเตฟฟี่
รหัสทำงานได้ดี
ถ้าคุณต้องการล็อกช่วงของเซลล์เพื่อป้องกันการแก้ไข คุณต้องป้องกันเวิร์กชีตด้วยตนเองหลังจากเลือกตัวเลือกไม่มีใน D90
และเนื่องจาก D90 อยู่ในช่วง C94:F104 หลังจากปกป้องเวิร์กชีตแล้ว D90 ก็ไม่สามารถแก้ไขได้เช่นกัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
D90 ไม่อยู่ในช่วง อยู่เหนือ C4 . 94 แถว
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
โหลดเพิ่มเติม
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ