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

วิธีซ่อนหรือยกเลิกการซ่อนคอลัมน์ตามการเลือกรายการแบบหล่นลงใน Excel

ในขณะที่ใช้ Excel คุณสามารถซ่อนหรือยกเลิกการซ่อนคอลัมน์ที่ต้องการตามการเลือกรายการแบบหล่นลง ตัวอย่างเช่นหากคุณเลือกไม่ใช่ในรายการแบบเลื่อนลงคอลัมน์ C ถึงฉันจะถูกซ่อน แต่ถ้าคุณเลือกใช่คอลัมน์ C ถึงฉันที่ซ่อนอยู่จะไม่ถูกซ่อน ดูภาพหน้าจอด้านล่างที่แสดง
ในบทความนี้เราจะแสดงวิธี VBA เพื่อซ่อนหรือยกเลิกการซ่อนคอลัมน์ตามการเลือกรายการแบบหล่นลงใน Excel

ซ่อนหรือยกเลิกการซ่อนคอลัมน์ตามการเลือกรายการแบบหล่นลงใน Excel


ซ่อนหรือยกเลิกการซ่อนคอลัมน์ตามการเลือกรายการแบบหล่นลงใน Excel

ดังตัวอย่างข้างต้นหากต้องการซ่อนหรือยกเลิกการซ่อนคอลัมน์ C ถึง I ตามการเลือกรายการแบบหล่นลงโปรดทำดังนี้

1. ขั้นแรกสร้างรายการแบบหล่นลงของคุณด้วยใช่และไม่ใช่ที่คุณต้องการ

2. จากนั้นกด อื่น ๆ + F11 เพื่อเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

3. ดับเบิลคลิกชื่อแผ่นงานที่เปิดอยู่ในไฟล์ โครงการ VBA เพื่อเปิดตัวแก้ไขโค้ด

4. จากนั้นคัดลอกและวางโค้ด VBA ด้านล่างลงในตัวแก้ไขโค้ด

รหัส VBA: ซ่อนหรือยกเลิกการซ่อนคอลัมน์ตามการเลือกรายการแบบหล่นลง

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180822
    If Target.Column = 2 And Target.Row = 3 Then
        If Target.Value = "No" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = True
        ElseIf Target.Value = "Yes" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = False
        End If
    End If
End Sub

หมายเหตุ: ในโค้ดด้านบน Column = 2 และ Row = 3 เป็นการอ้างอิงเซลล์ของรายการแบบเลื่อนลงและช่วง C: I คือคอลัมน์ที่คุณต้องการซ่อนหรือยกเลิกการซ่อนโปรดเปลี่ยนตามความต้องการของคุณ

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

จากนี้ไปเมื่อคุณเลือกไม่ในรายการแบบเลื่อนลงคอลัมน์ที่ระบุทั้งหมดจะถูกซ่อนไว้

แต่ถ้าคุณเลือกใช่ในรายการแบบเลื่อนลงคอลัมน์ที่ซ่อนทั้งหมดจะแสดงทันที


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


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

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
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (78)
ได้รับคะแนน 5 จาก 5 · การจัดอันดับ 1
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันมีสมุดงานและพยายามทำความเข้าใจเกี่ยวกับโค้ด VBA ฉันมีรหัสที่หากฉันเลือกจากหน้าแบบเลื่อนลง 1 มันจะยกเลิกการซ่อนเวิร์กชีต ฉันกำลังมองหารหัสที่ฉันเลือกหน้า 1 & เลือกช่วง 3-5 จากดรอปดาวน์ ยกเลิกการซ่อนเวิร์กชีต & ยกเลิกการซ่อน 5 คอลัมน์ในเวิร์กชีตที่ไม่ได้ซ่อน เป็นไปได้ไหม?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ได้รับรหัสข้อผิดพลาดเมื่อคุณลบหมายเลขอินพุต ฉันสามารถขอความช่วยเหลือได้หรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ได้แก้ไขโค้ดดังนี้



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


ถ้า Target.Column = 3 และ Target.Row = 2 และ Target.Value = "ไม่"

แล้วก็


Application.Rows("3:90")).Select


Application.Selection.EntireRow.Hidden = จริง


อื่น


Application.Rows("3:90")).Select


Application.Selection.EntireRow.Hidden = เท็จ


End If


ย่อยสิ้นสุด




แต่ปัญหาที่กำลังเผชิญอยู่ไม่สามารถตอบใช่ ไม่ใช่ เนื่องจากถูกเลือกแถวที่ 3 ถึง 90 ทั้งหมด ไม่อนุญาตให้ฉันตอบคำถามถัดไป
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียนคุณฮาริคุมาร์

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


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

สิ่งที่ฉันมีอยู่ในใจคือสิ่งนี้:
ถ้า refcell = "a" ให้ซ่อนคอลัมน์ทั้งหมดที่มี "a" ในแถวที่ 7 หรือ else
ถ้า refcell = "b" ให้ซ่อนคอลัมน์ทั้งหมดที่มี "b" ในแถวที่ 7 หรือ else
ถ้า refcell = "c" ให้ซ่อนคอลัมน์ทั้งหมดที่มี "c" ในแถวที่ 7 else
แสดงคอลัมน์ทั้งหมด

หากเป็นไปได้ โค้ด VBA จะมีลักษณะอย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เฮ้! คุณพบวิธีแก้ปัญหานี้หรือไม่? กำลังหาอยู่พอดีเลย :D
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
จอห์นที่รัก,
รหัส VBA ต่อไปนี้สามารถช่วยคุณแก้ปัญหาได้ เมื่อป้อน "a" ลงในเซลล์ A1 คอลัมน์ทั้งหมดที่มี "a" ในแถว 7 จะถูกซ่อนโดยอัตโนมัติ นอกจากนี้ยังทำงานเมื่อป้อน b และ c ในเซลล์ A1

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRg เป็นช่วง
Dim xRgFind เป็นช่วง
Dim xRgUni เป็นช่วง
Dim xFirstAddress เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
Application.ScreenUpdating = เท็จ
แถว(7).EntireColumn.Hidden = False
ถ้า Target.Address = Range("A1")).Address แล้ว
ตั้งค่า xRg = Intersect(ActiveSheet.UsedRange, Rows(7))
ตั้งค่า xRgFind = xRg.Find(Target.Value, , xlValues, xlWhole, , , True)
ถ้าไม่ใช่ xRgFind ก็ไม่มีอะไรทั้งนั้น
xFirstAddress = xRgFind.Address
Do
ตั้งค่า xRgFind = xRg.FindNext(xRgFind)
ถ้า xRgUni ไม่มีอะไรเลย
ตั้งค่า xRgUni = xRgFind
อื่น
ตั้งค่า xRgUni = Application.Union(xRgUni, xRgFind)
End If
วนรอบขณะ (ไม่ใช่ xRgFind ไม่มีอะไร) และ (xRgFind.Address <> xFirstAddress)
End If
xRgUni.EntireColumn.Hidden = จริง
End If
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียนคุณไรอัน
โปรดลองใช้รหัส VBA ต่อไปนี้ เมื่อป้อน "a" ลงในเซลล์ A1 คอลัมน์ทั้งหมดที่มี "a" ในแถว 7 จะถูกซ่อนโดยอัตโนมัติ นอกจากนี้ยังทำงานเมื่อป้อน b และ c ในเซลล์ A1

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRg เป็นช่วง
Dim xRgFind เป็นช่วง
Dim xRgUni เป็นช่วง
Dim xFirstAddress เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
Application.ScreenUpdating = เท็จ
แถว(7).EntireColumn.Hidden = False
ถ้า Target.Address = Range("A1")).Address แล้ว
ตั้งค่า xRg = Intersect(ActiveSheet.UsedRange, Rows(7))
ตั้งค่า xRgFind = xRg.Find(Target.Value, , xlValues, xlWhole, , , True)
ถ้าไม่ใช่ xRgFind ก็ไม่มีอะไรทั้งนั้น
xFirstAddress = xRgFind.Address
Do
ตั้งค่า xRgFind = xRg.FindNext(xRgFind)
ถ้า xRgUni ไม่มีอะไรเลย
ตั้งค่า xRgUni = xRgFind
อื่น
ตั้งค่า xRgUni = Application.Union(xRgUni, xRgFind)
End If
วนรอบขณะ (ไม่ใช่ xRgFind ไม่มีอะไร) และ (xRgFind.Address <> xFirstAddress)
End If
xRgUni.EntireColumn.Hidden = จริง
End If
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล
ฉันยังใหม่กับเรื่องนี้ ฉันไม่สามารถบอกได้จากโค้ดของคุณว่าคุณกำหนด a, b และ c เป็นค่าในเซลล์ A1 อย่างไร โดยพื้นฐานแล้วฉันจะต้องทำอะไรกับโค้ดของคุณ แต่ฉันต้องการค่า A1 (หรือเซลล์อื่นใดที่ฉันต้องการใช้) เพื่อเป็นสตริง
ตัวอย่าง:
ฉันมีตาราง (ช่วงของเซลล์) ที่มีค่า 1 ใน 3 ค่าในแถวที่ 3 ค่าคือ ("ใช้งานอยู่" "ไม่ใช้งาน" และ "ปิด" ฉันต้องการคอลัมน์ทั้งหมดที่มี "ไม่ใช้งาน" หรือ "ปิด" " ในแถวที่ 3 ที่จะซ่อน ค่าในแถวที่ 3 มาจากฟังก์ชัน INDEX/MATCH ที่ดึงจากแผ่นงานอื่นในสมุดงานของฉัน ในแผ่นงานอื่น ฉันเลือก 1 ใน 3 ค่าจากรายการแบบหล่นลง

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


ขอบคุณมากล่วงหน้า!

เอ็ดดี้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน เอ็ดดี้
ขอโทษที่ช่วยเรื่องนี้ไม่ได้ คุณสามารถโพสต์คำถามของคุณในฟอรัมของเรา: https://www.extendoffice.com/forum.html เพื่อรับการสนับสนุนเพิ่มเติมจากผู้เชี่ยวชาญ Excel ของเรา
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องใช้สิ่งนี้เพื่อซ่อน 14 คอลัมน์สลับกันตามค่าของเซลล์
เช่น - ถ้า A1 = CAT ให้ซ่อนคอลัมน์ J ถึง V

ถ้า A1 = BAT ให้ซ่อนคอลัมน์ I และ K ถึง V

ถ้า A1 = HAT ให้ซ่อนคอลัมน์ I, J และ L ถึง P

โดยทั่วไป ข้อมูลของฉันจะอยู่ในคอลัมน์ I ถึง V และฉันต้องการซ่อนคอลัมน์จากช่วงนี้ ยกเว้นคอลัมน์ที่เลือกในเซลล์อ้างอิง และเลิกซ่อนทั้งหมดหากเลือก "ทั้งหมด" ในเซลล์อ้างอิง

ฉันลองใช้สูตรเดียวกันข้างต้นแบบวนซ้ำ แต่ได้รับ "ข้อผิดพลาดในการคอมไพล์ - " ฉันต้องใช้สูตรอื่นหรือไม่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน คุณรุจิ
ขออภัย ฉันไม่เข้าใจประเด็นของคุณจริงๆ ว่า "โดยทั่วไป ข้อมูลของฉันจะอยู่ในคอลัมน์ I จนถึง V และฉันต้องการซ่อนคอลัมน์จากช่วงนี้ ยกเว้นคอลัมน์ที่เลือกไว้ในเซลล์อ้างอิง และเลิกซ่อนทั้งหมดหากเลือก "ทั้งหมด" ในเซลล์อ้างอิง”
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ใครก็ได้ช่วย :


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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRg เป็นช่วง
ตั้งค่า xRg = ช่วง ("A1")
ถ้า xRg.Address = Target.Address และ Target.Value = "No" แล้ว
Columns("D:E")).EntireColumn.Hidden = True
ElseIf xRg.Address = Target.Address และ Target.Value = "ใช่" แล้ว
Columns("D:E")).EntireColumn.Hidden = False
Columns("F:G")).EntireColumn.Hidden = True
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการความช่วยเหลือเกี่ยวกับมาโคร Excel หรือสูตร ใครสามารถช่วย?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการความช่วยเหลือเกี่ยวกับมาโครที่คล้ายกัน แต่สำหรับช่วงเซลล์ที่ระบุ ไม่ใช่ทั้งคอลัมน์ สามารถทำได้หรือไม่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน คุณคารา
คุณหมายถึง "ซ่อนเนื้อหาของช่วงเซลล์ที่ระบุตามค่าของเซลล์" หรือไม่? กรุณาโพสต์คำถามของคุณพร้อมรายละเอียดเพื่อช่วยเราแก้ปัญหา
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี! ฉันมีตัวเลือก 10 รายการและกำลังพยายามแสดงเฉพาะแถว 57 ถึง 72 เมื่อฉันเลือกหนึ่งในนั้น ฉันกำลังใช้รหัสต่อไปนี้ แต่ก็ใช้งานไม่ได้และแดชบอร์ดของฉันก็ไม่เปลี่ยนแปลงเลย อย่างไรก็ตาม เมื่อฉันป้อนบางสิ่งลงในเซลล์แบบสุ่ม หน้าจะโหลดซ้ำและแถว 57:72 จะถูกซ่อน แต่ตัวเลือกทั้งหมดของฉันยังคงเหมือนเดิม และฉันไม่สามารถเลิกซ่อนได้อีกผ่านการเลือกกล่องดรอปบ็อกซ์ ฉันขอทราบได้ไหมว่ามีใครมีข้อเสนอแนะอื่นหรือไม่? ขอบคุณล่วงหน้า!


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

ถ้า Target.Column = 2 และ Target.Row = 3 และ Target.Value = "1"

จากนั้น Application.Rows("57:72") เลือก Application.Selection.EntireRow.Hidden = False

อื่น Application.Rows("57:72") เลือก Application.Selection.EntireRow.Hidden = True

End If

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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Column = 2 และ Target.Row = 3 แล้ว
ถ้า Target.Value = "ไม่" แล้ว
Application.Columns("C:I")).Select
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "ใช่" แล้ว
Application.Columns("C:I")).Select
Application.Selection.EntireColumn.Hidden = False
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
นี่คือสิ่งที่ฉันต้องทำ แต่ฉันไม่ต้องการให้คอลัมน์ถูกเน้นเมื่อฉันซ่อน/เลิกซ่อน ฉันจะสร้างโค้ดเพื่อไปยังเซลล์ถัดไปได้อย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับบทความที่เป็นประโยชน์ ฉันต้องการนำมาโครนี้ไปอีกขั้น: ฉันต้องการสิ่งนี้จริงๆ แต่คอลัมน์ที่ฉันต้องการซ่อน/ยกเลิกการซ่อนไม่จำเป็นต้องอยู่ในช่วงต่อเนื่อง คอลัมน์ของฉันมีตั้งแต่ C ถึง NC สิ่งที่ฉันต้องการคือ ถ้าฉันเลือกค่าเป้าหมาย 1 มันจะซ่อน AH เป็น NC และเลิกซ่อน C ถึง AG และเมื่อฉันเลือกค่าเป้าหมาย 2 มันจะซ่อน C ถึง AG และ BJ ไปยัง NC และเลิกซ่อน AH ไปยัง BI เป็นต้น ขึ้นอยู่กับมูลค่าเป้าหมาย
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
โดยพื้นฐานแล้ว ฉันจำเป็นต้องรู้วิธีอ้างอิงหลายช่วงในแต่ละครั้ง ฉันลองแล้ว แต่มันให้ข้อผิดพลาด มาดูกันค่ะ
Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Column = 2 และ Target.Row = 4 แล้ว
ถ้า Target.Value = "มกราคม" แล้ว
Application.Columns("AH:NC") เลือก
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = " มกราคม " แล้ว
Application.Columns("C:AG")).Select
Application.Selection.EntireColumn.Hidden = False

ElseIf Target.Value = "กุมภาพันธ์" แล้ว
Application.Columns("C:AG, BJ:NC") เลือก
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = " กุมภาพันธ์ " แล้ว
Application.Columns("AH:BI")).Select
Application.Selection.EntireColumn.Hidden = False

End If
End If
ย่อยสิ้นสุด

หมายเหตุ: ใช้งานได้กับ Target.Value = " January " แต่สำหรับ Target.Value = "February" จะเน้นที่ข้อผิดพลาดในบรรทัดนี้ => Application.Columns("C:AG, BJ:NC") เลือก

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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRG เป็นช่วง
Dim xHRow เป็นจำนวนเต็ม
ตั้งค่า xRG = ช่วง ("B4")
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น
ถ้า Target.Value = "มกราคม" แล้ว
Application.Columns("AH:NC")).Hidden = True
Application.Columns("C:AG")).Hidden = False
ElseIf Target.Value = "กุมภาพันธ์" แล้ว
Application.Columns("C:AG")).Hidden = True
Application.Columns("BJ:NC")).Hidden = True
Application.Columns("AH:BI")).Hidden = False
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เมนูแบบเลื่อนลงของฉันอยู่ที่เซลล์ B23 ถ้าใช่ แสดง และถ้าไม่ใช่ ให้ซ่อนแถวที่ 29 นี่คือรหัสที่ฉันใช้:

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
'ปรับปรุงโดย Extendoffice 20180822
ถ้า Target.Column = 2 และ Target.Row = 23 แล้ว
ถ้า Target.Value = "ไม่" แล้ว
Application.Row(29).Select
Application.Selection.EntireRow.Hidden = จริง
ElseIf Target.Value = "ใช่" แล้ว
Application.Row(29).Select
Application.Selection.EntireRow.Hidden = เท็จ
End If
End If
ย่อยสิ้นสุด

แต่ฉันลงเอยด้วยข้อผิดพลาดรันไทม์ 438 - Object ไม่รองรับคุณสมบัติหรือวิธีการนี้ ทำไม มีอะไรผิดปกติในรหัสด้านบนหรือไม่?

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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRG เป็นช่วง
Dim xHRow เป็นจำนวนเต็ม
ตั้งค่า xRG = ช่วง ("B23")
xHRow = 29
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น
ถ้า Target.Value = "ไม่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = จริง
ElseIf Target.Value = "ใช่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = เท็จ
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล


ฉันหวังว่าคุณสามารถช่วยฉันในการซ่อน/แสดงหลายแถว ฉันต้องการแสดงแถว 63-73 เมื่อเลือก YES ในเซลล์ D51 ฉันใช้สิ่งต่อไปนี้ -


Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRG เป็นช่วง
Dim xHRow เป็นจำนวนเต็ม
ตั้งค่า xRG = ช่วง ("D51")
xHRow = ("63:73")
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น
ถ้า Target.Value = "ไม่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = จริง
ElseIf Target.Value = "ใช่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = เท็จ
End If
End If
ย่อยสิ้นสุด



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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRG เป็นช่วง
Dim xHRow เป็นสตริง
ตั้งค่า xRG = ช่วง ("D51")
xHRow = "63:73"
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น
ถ้า Target.Value = "ไม่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = จริง
ElseIf Target.Value = "ใช่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = เท็จ
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสที่กำหนดให้ซ่อน/ยกเลิกการซ่อนคอลัมน์ตามค่าที่เลือกจากรายการดรอปดาวน์ของคอลัมน์อื่นใช้งานได้ดี ขอบคุณ. แต่ใช้ได้เฉพาะแถวเดียวเท่านั้น
วิธีนำไปใช้กับจำนวนแถวที่เหลือในสเปรดชีตที่เลือก ฉันเข้าใจว่าเราอาจต้องกำหนดตัวแปรสำหรับหมายเลขแถวและในวงที่เพิ่มขึ้นนั้น แต่ฉันไม่รู้ไวยากรณ์ของมัน ใครสามารถช่วยได้บ้าง?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
โปรดลองใช้โค้ด VBA ด้านล่าง หวังว่ามันจะช่วยได้
โปรดเปลี่ยนช่วงตามที่คุณต้องการ

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRG เป็นช่วง
ตั้งค่า xRG = ช่วง ("B3:B30")
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น
ถ้า Target.Value = "ไม่" แล้ว
Application.Columns("C:I")).Select
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "ใช่" แล้ว
Application.Columns("C:I")).Select
Application.Selection.EntireColumn.Hidden = False
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอขอบคุณ. ฉันใช้รหัสและใช้งานได้ดี แต่เมื่อฉันพิมพ์ลงในเซลล์ด้านล่างแล้วกด Enter เคอร์เซอร์จะย้ายเคอร์เซอร์กลับไปที่กล่องเป้าหมายโดยอัตโนมัติ มีวิธีแก้ไขปัญหานี้หรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีแกรนท์
ฉันลองตามที่คุณพูดถึงแล้ว แต่ไม่พบปัญหาเดียวกัน คุณช่วยบอกฉันเวอร์ชัน Excel ของคุณได้ไหม ขอบคุณสำหรับความคิดเห็น
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
แต่ละคอลัมน์เป็นนักเรียนที่แตกต่างกัน (2 ในตัวอย่างนี้ A และ B) ฉันมีสองดรอปดาวน์ (ใน A1 และ B1) แต่ละคนมี "ผ่าน" "ล้มเหลว" และ "เลือกหนึ่งรายการ" เป็นตัวเลือก ตอนนี้ ฉันสามารถทำให้มันใช้งานได้เมื่อเลือกเมนูดรอปดาวน์เพียงรายการเดียว (ไม่ว่าจะเป็น A1 หรือ B1) ฉันต้องการยกเลิกการซ่อนฟิลด์ที่ถูกซ่อนโดย A1 ทุกครั้งที่ฉันเลือกบางอย่างใน B1 เป้าหมายคือการเลือกตัวเลือกใน A1 และเติมแถวที่เหลือ จากนั้นเลือก B1 และเติมแถวใดก็ได้ที่เหลืออยู่ ( โดยไม่คำนึงถึงการเลือก A1

ขอขอบคุณ!

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

ถ้า Intersect(Target, Range("A1:B2")) Is Nothing or Target.Cells.Count > 1 แล้ว
ออกจาก Sub

ElseIf Range("A1")).Value = "Select One" จากนั้น
Rows("2:15")).EntireRow.Hidden = False

ElseIf Range("A1")).Value = "ผ่าน" แล้ว
Rows("7")).EntireRow.Hidden = False
Rows("8:15")).EntireRow.Hidden = True

ElseIf Range("A1")).Value = "Failed" แล้ว
Rows("7")).EntireRow.Hidden = True
Rows("8:15")).EntireRow.Hidden = False

ElseIf Range("B1")).Value = "Select One" จากนั้น
Rows("2:15")).EntireRow.Hidden = False

ElseIf Range("B1")).Value = "ผ่าน" แล้ว
Rows("7")).EntireRow.Hidden = False
Rows("8:15")).EntireRow.Hidden = True

ElseIf Range("B1")).Value = "Failed" แล้ว
Rows("7")).EntireRow.Hidden = True
Rows("8:15")).EntireRow.Hidden = False

End If

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอให้เป็นวันที่ดี,
ขออภัยไม่สามารถช่วยคุณในเรื่องนั้นได้ ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันได้รับข้อผิดพลาดที่ xHRow = (14:24")

ฉันกำลังพยายามซ่อนหรือแสดงหลายแถวขึ้นอยู่กับการเลือก C4 ของฉัน คุณช่วยด้วยสิ่งที่ฉันทำผิดได้ไหม

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRG เป็นช่วง
Dim xHRow เป็นช่วง
ตั้งค่า xRG = ช่วง ("C4")
xHRow = ("14:24")
ถ้าไม่ตัดกัน (เป้าหมาย xRG) ก็ไม่มีอะไรทั้งนั้น
ถ้า Target.Value = "ดึง" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = จริง
ElseIf Target.Value = "แทนที่" แล้ว
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = เท็จ
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ข้อผิดพลาดคือ: ข้อผิดพลาดรันไทม์ '91':
ไม่ได้ตั้งค่าตัวแปรอ็อบเจ็กต์หรือตัวแปรบล็อก
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการความช่วยเหลือ ทำไมเมื่อฉันคัดลอกสูตรนั้นไปยัง VBA ของฉันแล้ว และฉันพยายามเล่นมัน ทั้งตารางจึงถูกซ่อนไม่ใช่แค่คอลัมน์บางส่วนที่ฉันต้องการซ่อน
ขอบคุณมากสำหรับความช่วยเหลือของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี Reza G.
รหัสทำงานได้ดีในกรณีของฉัน คุณต้องการแนบภาพหน้าจอของช่วงตารางและโค้ด VBA หลังการเปลี่ยนแปลงหรือไม่ ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Bonjour j'ai le même ปัญหา...

Voici mon รหัส VBA modifié :

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Column = 3 และ Target.Row = 3 และ Target.Value = "Gestion" แล้ว
Application.Columns("D:E")).Select
Application.Selection.EntireColumn.Hidden = True

อื่น

ถ้า Target.Value = "Affaire nouvelle" แล้ว
Application.Columns("D:E")).Select
Application.Selection.EntireColumn.Hidden = False

อื่น

ถ้า Target.Value = "Avenant" แล้ว
Application.Columns("D:E")).Select
Application.Selection.EntireColumn.Hidden = False
End If
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันใช้รหัสเพื่อทำงานได้ดี ขอขอบคุณ. แต่เมื่อฉันเลือกจากดรอปดาวน์ มันใช้งานได้กับโค้ดสุดท้ายหรือย้ายไปยังข้อมูลคอลัมน์สุดท้าย วิธีเลือกรายการแบบเลื่อนลงทุกครั้ง (คอลัมน์ = 13 และ Target.Row = 3 แล้ว) ไม่ย้ายและสามารถบันทึกข้อมูลคอลัมน์ถัดไปได้อย่างไร
ขอขอบคุณ.
ตัวอย่าง: Private Sub Worksheet_Change(ByVal Target As Range)
'ปรับปรุงโดย Extendoffice 20180822
' ถ้า Target.Column = 13 และ Target.Row = 3 แล้ว
ถ้า Target.Column = 13 แล้ว
ถ้า Target.Value = "1: ใช่" แล้ว
Application.Columns("N:O")).Select
Application.Selection.EntireColumn.Hidden = False
Application.Columns("P:S")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("V:Z")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("X:Z")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("AB:AK")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("AL")).Select
Application.Selection.EntireColumn.Hidden = False
Application.Columns("AM")).Select
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "2: ไม่" แล้ว
Application.Columns("N")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("O:Z")).Select
Application.Selection.EntireColumn.Hidden = False
Application.Columns("AB:AK")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("AL")).Select
Application.Selection.EntireColumn.Hidden = True
Application.Columns("AM")).Select
Application.Selection.EntireColumn.Hidden = False
ElseIf Target.Value = "" แล้ว
Application.Columns("N:AN")).Select
Application.Selection.EntireColumn.Hidden = False
End If
End If
'ถ้า Target.Column = 16 และ Target.Row = 3 แล้ว
ถ้า Target.Column = 16 แล้ว
ถ้า Target.Value = "Cat" แล้ว
Application.Columns("V:W")).Select
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "หมา" แล้ว
Application.Columns("V:W")).Select
Application.Selection.EntireColumn.Hidden = False
End If
End If
ย่อยสิ้นสุด
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
โหลดเพิ่มเติม
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ