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

จะซ่อนหรือเลิกซ่อนแผ่นงานเฉพาะตามค่าของเซลล์ในแผ่นงานอื่นได้อย่างไร

มีวิธีการใดบ้างที่เราจะซ่อนหรือยกเลิกการซ่อนแท็บแผ่นงานเฉพาะตามเนื้อหาของเซลล์ในแผ่นงานอื่น ตัวอย่างเช่นเมื่อฉันป้อนข้อความ“ ใช่” ในเซลล์ G1 ของ Sheet2 ฉันต้องการซ่อน Sheet1 และเมื่อฉันป้อน“ ไม่ใช่” Sheet1 จะแสดงพร้อมกัน ฉันจะแก้ปัญหานี้ใน Excel ได้อย่างไร

ซ่อนหรือยกเลิกการซ่อนแท็บแผ่นงานเฉพาะตามค่าของเซลล์ด้วยรหัส VBA


ลูกศรสีฟ้าฟองขวา ซ่อนหรือยกเลิกการซ่อนแท็บแผ่นงานเฉพาะตามค่าของเซลล์ด้วยรหัส VBA

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

1. ไปที่แผ่นงานที่มีค่าเซลล์ที่คุณต้องการซ่อนแผ่นงานอื่นตาม

2. คลิกขวาที่แท็บแผ่นงานแล้วเลือก ดูรหัสในโผล่ออกมา Microsoft Visual Basic สำหรับแอปพลิเคชัน โปรดคัดลอกและวางรหัสต่อไปนี้ลงในหน้าต่างโมดูลว่างดูภาพหน้าจอ:

รหัส VBA: ซ่อนหรือซ่อนแท็บแผ่นงานตามค่าของเซลล์:

Private Sub Worksheet_Change(ByVal Target As Range)
If [G1] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If
End Sub

doc ซ่อนแท็บตามค่าเซลล์ 1

หมายเหตุ ในโค้ดด้านบน G1 และใช่คือเซลล์และเนื้อหาของเซลล์ที่คุณต้องการอ้างอิงและ Sheet1 คือแผ่นงานเฉพาะที่คุณต้องการซ่อนหรือเลิกซ่อน คุณสามารถเปลี่ยนได้ตามความต้องการของคุณ

3. จากนั้นบันทึกและปิดรหัสนี้เมื่อคุณป้อน“ ไม่ใช่” หรือข้อความอื่นในเซลล์ G1 แผ่นงาน 1 จะถูกซ่อนไว้ แต่ถ้าคุณป้อน“ ใช่” ในเซลล์ Sheet1 จะปรากฏขึ้นพร้อมกันโปรดดูภาพหน้าจอ:

doc ซ่อนแท็บตามค่าเซลล์ 2
1
doc ซ่อนแท็บตามค่าเซลล์ 3

 


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

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

 

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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Range("X2:X100") = "" แล้ว
ชีต("การวัดตามงานของสหภาพยุโรป") มองเห็นได้ = เท็จ
อื่น
ชีต("การวัดตามงานของสหภาพยุโรป") มองเห็นได้ = True
End If
ย่อยสิ้นสุด


ขอขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มีโอกาสได้รับคำตอบหรือไม่? ฉันยังพบสถานการณ์นี้ซึ่งมีช่วงทั้งหมดเข้ามาเล่นแทนที่จะเป็นเพียงเซลล์เดียว... ฉันใช้การเข้ารหัสแบบเดียวกันนี้กับผลลัพธ์เดียวกัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันทำ 2 แผ่นงานดังนี้:
Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า [C20] = "ใช่" แล้ว
ชีต("sheet1")).Visible = True
อื่น
ชีต("sheet1")).Visible = False
End If
ถ้า [C22] = "ใช่" แล้ว
ชีต("sheet2")).Visible = True
อื่น
ชีต("sheet2")).Visible = False
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มีประโยชน์มาก!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการดูว่าคุณสามารถช่วยเกี่ยวกับปัญหาของฉันได้ไหม ฉันมีรหัสที่แน่นอนนี้ในชีตที่ฉันใช้ แต่มีฟังก์ชันหรือ ดังนั้นคำตอบอาจเป็น "ใช่" หรือ "จริง" อย่างไรก็ตาม แผ่นงานที่ถูกซ่อน/ไม่ถูกซ่อนในบางครั้งอาจซ่อนตัวเองซ้ำโดยไม่ทราบสาเหตุ มันจะยกเลิกการซ่อนเมื่อฉันพิมพ์ใช่ แต่เมื่อฉันไปใช้ในภายหลังมันจะถูกซ่อนอีกครั้งแม้ว่าค่าของเซลล์ยังคงเป็นใช่ มีความคิดเห็นไหมว่าทำไมสิ่งนี้ถึงเกิดขึ้น และ/หรือจะแก้ไขได้อย่างไร
รหัสสำหรับอ้างอิง:
Private Sub Worksheet_Change(ByVal Target As Range)'ซ่อน/เลิกซ่อนหน้าการปรับเทียบ
ถ้า [B18] = "ใช่" หรือ Target.Value = "จริง" แล้ว
ชีต("XXX Verification").Visible = True
อื่น
ชีต ("การยืนยัน XXX") มองเห็นได้ = เท็จ
End If

ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีฉันมีสมุดงานที่มีหลายแท็บที่มีชื่อเชื่อมโยงกับแผ่นงานดัชนีที่ด้านหน้า ผู้ใช้สามารถเลือกแผ่นงานที่ต้องการใช้โดยทำเครื่องหมายที่ช่องถัดจากชื่อแผ่นงาน - ว่าง, ไม่มีหรือใช่ (รายการแบบเลื่อนลง) มีวิธีการปรับโค้ดนี้เพื่อให้มองเห็นแผ่นงานได้หรือไม่หากช่องทำเครื่องหมายว่างเปล่าหรือมี "ใช่" แต่จะไม่ปรากฏหากช่องทำเครื่องหมายมี "ไม่มี"
ฉันได้ลองแล้วแต่ไม่รู้เกี่ยวกับ VBA มากพอที่จะทำให้มันใช้งานได้ ขอบคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการซ่อนหรือเลิกซ่อนแผ่นงานตามค่าของเซลล์ (ใช่/ไม่ใช่) ค่าอยู่ในตาราง (tblFileContents) และคอลัมน์ D4:D25 และชื่อชีตอยู่ใน A4:A25 บนชีต . ลำดับของรายการสามารถเปลี่ยนแปลงได้ คุณมีการอ้างอิงถึงตัวอย่างที่จะช่วยให้ฉันทำเช่นนี้ได้หรือไม่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีปัญหาเดียวกันและคนอื่นให้วิธีแก้ไข
สร้างตาราง (รูปแบบเป็นตาราง) ที่มี 2 คอลัมน์ ตั้งชื่อคอลัมน์ด้านซ้ายว่าชีตที่จะแสดง/ซ่อน คอลัมน์ด้านขวาขึ้นอยู่กับคุณ ใส่ชื่อชีตทั้งหมดในคอลัมน์ด้านซ้าย
จากนั้นเลือกดูโค้ดสำหรับแท็บนี้และป้อน Dim Changed As Range, c As Range, rMTS As Range
มืดมนตราบนานเท่านาน
Dim bShowAll เป็นบูลีน

ตั้งค่า rMTS = ช่วง ("TblShowHide [ทำเครื่องหมายเพื่อแสดง]")
ตั้งค่าเปลี่ยน = อินเตอร์เซก (เป้าหมาย, rMTS)
ถ้าไม่เปลี่ยนก็ไม่เป็นไร
bShowAll = Len(rMTS.Cells(1).Value) > 0
เกี่ยวกับข้อผิดพลาดต่อไป
สำหรับฉัน = 2 ถึง rMTS.Rows.Count
ชีต(ช่วง("TblShowHide[แสดง/ซ่อนชีต]") เซลล์ (i).Value).Visible = IIf(bShowAll, True, Len(rMTS.Cells(i).Value) > 0)
ต่อไปฉัน
เมื่อเกิดข้อผิดพลาด GoTo 0
End If
ย่อยสิ้นสุด


ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะลองดู ขอบคุณมาก!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ไม่แน่ใจว่าฉันต้องเปลี่ยนอะไร แต่ไม่ได้ผลสำหรับฉัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฌอง
ใช่ ฉันมีตัวอย่างที่ฉันแนบไว้ที่นี่ เปลี่ยนชื่อไฟล์เป็น example.xlsm (ไม่ได้ซิป แต่ต้องเปลี่ยนชื่อเพื่ออัปโหลด)
บนแท็บเมนู จะมีตารางที่มีชื่อแท็บต่างๆ สร้าง x หรืออักขระอื่นๆ เพื่อแสดงแท็บ หากคุณลบอักขระ แท็บนั้นจะถูกซ่อน
หวังว่าจะช่วย
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มีหลายรายการ แต่ไม่มีไฟล์ excel
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการให้มีเมนู/สารบัญเป็นแผ่นงานแรกของฉันและอิงตามคำตอบใช่/ไม่ใช่ - แผ่นงานบางแผ่นปรากฏขึ้น เช่น มองเห็นได้มากกว่า 1 รายการ
ฉันกำลังดิ้นรนเพื่อให้แผ่นงานหลายแผ่นปรากฏขึ้นตามรหัสด้านบน
ฉันสามารถใช้ฟังก์ชัน AND เช่น ถ้าเซลล์ X = "ใช่" ให้แสดงแผ่น Y และแผ่น Z และแผ่น K ได้หรือไม่
คำแนะนำใด ๆ ยินดีเป็นอย่างยิ่ง
ความนับถือ
เฮเลน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
А вот не могу понять, как такое сделать в гугл таблицах именно?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีเพื่อน,

คุณสามารถเปิด Google ชีตใหม่ เพิ่มชีตใหม่เพื่อให้มี "Sheet1" และ "Sheet2" จากนั้นไปที่ Tools > Script Editor ในเอดิเตอร์ ให้วางสิ่งต่อไปนี้

ฟังก์ชัน myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2");

var cell1 = sheet1.getRange('B2');

ถ้า (cell1.getValue() == 2) {
sheet2.hideSheet();
}

ถ้า (cell1.getValue() == 3) {
sheet2.showSheet();
}
}

ได้โปรดลองดู

ขอแสดงความนับถือ
แมนดี้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสนี้ใช้งานได้ดี อย่างไรก็ตาม ฉันมีตัวแปร 42 ตัวสำหรับ 70 แผ่น ดังนั้นรหัสนี้จึงยาวมากและหยุดทำงาน มีวิธีทำให้โค้ดนี้ในส่วนที่ไม่เกินขนาดโค้ดที่ VBA สามารถจัดการได้หรือไม่ หรือฉันต้องแบ่งออกเป็นสอง excels แยกกัน?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคุณลิซ
ขออภัย ยังไม่มีวิธีที่ดีในการแก้ไขปัญหาของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีค่าในเซลล์ B1 ว่าถ้าใช่ยกเลิกการซ่อนชีต 1 แต่ยังมีค่าใน B2 นั่นคือถ้าใช่ยกเลิกการซ่อน Sheet2 ฯลฯ ฯลฯ มันซ่อน / ยกเลิกการซ่อนแผ่นงานสุดท้ายได้ดี แต่ไม่ใช่ส่วนที่เหลือฉันจะพูด 10 ค่าได้อย่างไร 10 แผ่นที่แตกต่างกัน? ขอบใจ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี แอนดี้
เพื่อแก้ปัญหาของคุณ โปรดใช้รหัสด้านล่าง:
Private Sub Worksheet_Change(ByVal Target As Range)
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If
If [B3] = "Yes" Then
Sheets("Sheet2").Visible = True
Else
Sheets("Sheet2").Visible = False
End If
If [B4] = "Yes" Then
Sheets("Sheet3").Visible = True
Else
Sheets("Sheet3").Visible = False
End If
If [B5] = "Yes" Then
Sheets("Sheet4").Visible = True
Else
Sheets("Sheet4").Visible = False
End If
If [B6] = "Yes" Then
Sheets("Sheet5").Visible = True
Else
Sheets("Sheet5").Visible = False
End If
End Sub

หมายเหตุ: ในโค้ดด้านบน คุณเพียงแค่ต้องคัดลอกสคริปต์ด้านล่างหลาย ๆ ครั้ง และเปลี่ยนการอ้างอิงเซลล์และชื่อแผ่นงานเป็นของคุณเอง
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If


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

ดูเหมือนว่าฉันจำเป็นต้องใช้คำสั่ง IF/OR แต่ไม่แน่ใจว่าจะทำงานอย่างไร

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า [K6] = "VS 1", "VS 2", "VS 3", VS 4" จากนั้น
ชีต("Page6").Visible = True
อื่น
แผ่นงาน ("Page6") มองเห็นได้ = เท็จ
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มาร์กาเร็ต
เพื่อแก้ปัญหาของคุณ โปรดใช้โค้ดด้านล่าง คุณควรใช้ Or เพื่อเข้าร่วมเงื่อนไข
Private Sub Worksheet_Change(ByVal Target As Range)
If [K6] = "VS 1" Or [K6] = "VS 2" Or [K6] = "VS 3" Or [K6] = "VS 4" Then
Sheets("Page6").Visible = True
Else
Sheets("Page6").Visible = False
End If
End Sub

โปรดลอง หวังว่าจะช่วยคุณได้!
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ