VBA สามารถลบช่วงที่มีชื่อโดยอ้างอิงตามค่า RefersTo หรือไม่


1

ฉันกำลังล้างเวิร์กบุ๊ก Excel ที่ป่องและพยายามลบช่วงที่มีชื่อเป็นจำนวนมากซึ่งอ้างถึงเวิร์กบุ๊กในไดรฟ์ C ของใครบางคน มีจำนวนมาก และพวกเขาไม่ได้ถูกใช้ในสมุดงานนี้

'C: \ blahblah \ ... \ ... \ ... \ ... \ ... \ [WorkBookName.xls] Sheet1! $ E $ 28

รหัสด้านล่างช่วยฉันลบช่วงที่มีชื่อซึ่งชื่อของพวกเขามี 'ไอคอน' (ตัวอย่าง)

อย่างไรก็ตามฉันต้องลบช่วงเมื่อมีเส้นทางตามที่แสดงด้านบน โปรดจำไว้ว่าชื่อเวิร์กบุ๊กหรือแผ่นงานอาจเปลี่ยนแปลงได้เช่นกันแต่ไดรฟ์ยังคงเหมือนเดิม

Sub deleteNamedRangesSpecific()
For Each NR In ActiveWorkbook.Names
    If NR.NameLocal Like "*" & "icon" & "*" Then NR.delete
Next
End Sub

แนวคิดใดบ้างที่จะลบตามช่วงของตัวเองไม่ใช่ชื่อของช่วง?

ขอบคุณ

ไมค์


If ... Then Range(nr).ClearContents? หรือ.Deleteถ้าคุณต้องการลบเซลล์ / แถว
BruceWayne

คำตอบ:


1

คุณเพียงแค่ส่งNR.RefersToตัวแปรไปยังตัวแปรชนิดสตริงเพื่อให้คุณสามารถใช้Likeฟังก์ชันได้

รหัสนี้ใช้ได้สำหรับฉัน แก้ไข$E$28ให้เหมาะสมอย่างชัดเจน

Option Explicit
Sub deleteNamedRangesSpecific()
    Dim NR As Name
    Dim compare_string As String
    For Each NR In ActiveWorkbook.Names
        compare_string = NR.RefersTo
        If compare_string Like "*" & "$E$28" & "*" Then NR.Delete
    Next
End Sub

คำตอบที่ดีขอบคุณและยินดีต้อนรับสู่ Superuser
wizlog
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.