ตัวตรวจสอบเอกสารพบชื่อที่ซ่อนอยู่ในเวิร์กบุ๊กของคุณ ชื่อเหล่านี้สามารถจัดเก็บข้อมูลที่ซ่อนอยู่เกี่ยวกับสถานการณ์ของ Solver ได้ ตัวอย่างเช่น เมื่อคุณ ใช้ Solver Add-in เพื่อเรียกใช้สถานการณ์สมมติ Solver อาจเก็บข้อมูลเกี่ยวกับพารามิเตอร์การคํานวณและข้อมูลที่สําคัญอื่นๆ เป็นชื่อที่ซ่อนอยู่ในเวิร์กบุ๊กของคุณ
สิ่งสำคัญ: Microsoft แสดงตัวอย่างการเขียนโปรแกรมสําหรับภาพประกอบเท่านั้น โดยไม่มีการรับประกันทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จํากัดเพียงการรับประกันโดยนัยถึงความสามารถในเชิงพาณิชย์หรือความเหมาะสมสําหรับวัตถุประสงค์เฉพาะ บทความนี้จะถือว่าคุณคุ้นเคยกับภาษาการเขียนโปรแกรมที่กําลังแสดงอยู่ และมีเครื่องมือที่ใช้สําหรับสร้างและแก้ไขจุดบกพร่องของกระบวนการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายฟังก์ชันการทํางานของกระบวนการเฉพาะได้ แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้มีฟังก์ชันการทํางานที่เพิ่มขึ้นหรือสร้างขั้นตอนต่างๆ เพื่อตอบสนองความต้องการเฉพาะของคุณ
ปัญหา
ตัวตรวจสอบเอกสารไม่สามารถเอาชื่อที่ซ่อนอยู่เหล่านี้ออกให้คุณได้
วิธีแก้ไขปัญหาที่แนะนำ
เรียกใช้แมโครต่อไปนี้เพื่อเอาชื่อที่ซ่อนอยู่ออก แมโครจะแสดงกล่องข้อความที่มีรายการสามรายการ: (1) ไม่ว่าชื่อที่กําหนดจะมองเห็นหรือซ่อนอยู่หรือไม่ (2) ชื่อที่กําหนด และ (3) สิ่งที่ชื่ออ้างอิงถึง (การอ้างอิงเซลล์เวิร์กบุ๊ก) คุณสามารถเลือก ใช่ หรือ ไม่ใช่ เพื่อลบหรือเก็บชื่อที่กําหนดแต่ละชื่อได้
หมายเหตุ: ถ้าคุณใช้แมโครนี้เพื่อเอาชื่อที่ซ่อนอยู่ออก Add-in (เช่น Solver) หรือแมโครอาจไม่ทํางานตามที่คาดไว้ และอาจสูญเสียข้อมูลที่ซ่อนอยู่ที่เกี่ยวข้องกับรายการเหล่านั้น แมโครนี้ยังมีผลกับชื่อที่กําหนดที่ถูกซ่อน ไม่ใช่เฉพาะชื่อที่ถูกเพิ่มโดย Solver เท่านั้น
ข้อควรระวัง: ถ้าชื่อแผ่นงานของคุณมีช่องว่าง คุณอาจได้รับข้อผิดพลาดเมื่อคุณพยายามลบชื่อที่กําหนด
เอาชื่อที่ซ่อนอยู่ออก
' Module to remove all hidden names on active workbook
Sub Remove_Hidden_Names()
' Dimension variables.
Dim xName As Variant
Dim Result As Variant
Dim Vis As Variant
' Loop once for each name in the workbook.
For Each xName In ActiveWorkbook.Names
'If a name is not visible (it is hidden)...
If xName.Visible = True Then
Vis = "Visible"
Else
Vis = "Hidden"
End If
' ...ask whether or not to delete the name.
Result = MsgBox(prompt:="Delete " & Vis & " Name " & _
Chr(10) & xName.Name & "?" & Chr(10) & _
"Which refers to: " & Chr(10) & xName.RefersTo, _
Buttons:=vbYesNo)
' If the result is true, then delete the name.
If Result = vbYes Then xName.Delete
' Loop to the next name.
Next xName
End Sub