ชื่อของช่วงสามารถเป็นแบบไดนามิกที่มีหลายแผ่นใน Microsoft Excel


1

ฉันเป็นมือใหม่ใน VBA สิ่งที่ฉันอยากรู้ก็คือชื่อของช่วงสามารถเป็นแบบไดนามิกที่มีหลายแผ่น ฉันค้นหาทางออนไลน์และพบคำถามที่คล้ายกันที่ถามโดยคนอื่นและได้รับคำตอบจากผู้ใช้ชื่อ Gary's Student จากเว็บไซต์นี้ด้านล่างนี้เป็นสำเนาของรหัสของเขา / เธอและลิงก์ไปยังข้อความต้นฉบับ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim str As String
str = Range("A1").Text
If Intersect(Range("A1"), Target) Is Nothing Then Exit Sub
Dim n As Name
For Each n In ActiveWorkbook.Names
    If n.RefersTo = "=Sheet1!$A$2:$A$4" Then
        n.Delete
    End If
Next n
ActiveWorkbook.Names.Add Name:=str, RefersTo:="=Sheet1!$A$2:$A$4"
End Sub

ชื่อของช่วงที่ตั้งชื่อสามารถเป็นแบบไดนามิกได้หรือไม่?

ฉันต้องการทราบว่าเป็นไปได้ไหมที่จะทำซ้ำ Sheet1 พร้อมกับชื่อและช่วงแบบไดนามิกและในสมุดงานเดียวกันและมาถึงที่ว่า Sheet2 (รหัสแผ่นงาน) ด้วยชื่อของช่วงที่แตกต่างกัน (อาจมีเซลล์ที่แตกต่างกัน / เดียวกัน) . ฉันลองเล่นกับแนวคิดนี้ แต่ได้รับข้อความแสดงข้อผิดพลาด

Compile error: 

Ambiguous name detected: Worksheet_Change

เหตุผลที่ฉันต้องการทำซ้ำแผ่นงานเนื่องจาก Sheet1 จะเป็นการคำนวณต้นทุนสำหรับ "Base-Case" และ Sheet2 จะใช้สำหรับ "ตัวเลือก 1" ตัวเลือก 1 จะมีเนื้อหาส่วนใหญ่เป็น "Base-Case" แต่มีการเปลี่ยนแปลงบางอย่าง ฉันจะสร้างตารางเปรียบเทียบเพื่อระบุการเปลี่ยนแปลงระหว่างแผ่นงานสองแผ่น (หรือมากกว่านั้นสูงสุด 4 แผ่น)

ฉันจะขอบคุณมากสำหรับความช่วยเหลือใด ๆ

ฌอน

ล่าช้าไปคำถามแรก

หลังจากเล่นกับแผ่นงานที่ฉันกำลังทำอยู่ตอนนี้ฉันรู้แล้วว่าฉันต้องสามารถทำซ้ำแผ่นงานจากแผ่นงาน "ฐานกรณี" ที่แผ่นงาน "ฐานกรณี" มีช่วงที่ตั้งชื่อไว้จำนวนหนึ่ง สิ่งที่ฉันจะต้องมีแผ่นงานใหม่ที่ซ้ำกันพูดว่า "Sheet2" ที่ต้องทำคือการมีชื่อเดียวกันของช่วงที่มีชื่อของ Sheet1 แต่ช่วงบางช่วงเหล่านี้จะอ้างถึงจำนวนแถวที่มากขึ้นหรือน้อยลง ตัวอย่างเช่น (ดูด้านล่าง) ใน Sheet1 ฉันมี 3 ช่วงชื่อดังนี้

--In Sheet1-- 
Name of named range 1: "Substructure"       Range:$A$20:$A40
Name of named range 2: "Superstructure"     Range:$A$42:$A60
Name of named range 3: "Finishes"           Range:$A$62:$A80

--In Sheet2-- 
Name of named range 1: "Substructure"       Range:$A$20:$A30
Name of named range 2: "Superstructure"     Range:$A$32:$A66
Name of named range 3: "Finishes"           Range:$A$68:$A100

ฌอน


ถ้าช่วงข้อมูลเป็นเรื่องปกติก็เป็นไปได้ที่จะสร้างช่วงไดนามิกในเวิร์กบุ๊ก เช่นนี้สามารถใช้เป็นชื่อช่วง='Sheet1:Shee4'!$A$2:$C$20
Rajesh S

สวัสดี Rajesh ขอบคุณสำหรับการตอบสนองที่รวดเร็วมาก ฉันได้เพิ่มคำถามเพิ่มเติมลงในคำถามเดิมของฉันและจะขอบคุณถ้าดูได้
ฌอน L

ถ้าคุณต้องการให้ชื่อเดียวกันอ้างถึงช่วงที่แตกต่างกันในแผ่นงานที่แตกต่างกันคุณจะต้องให้พวกเขามีขอบเขตของแผ่นงานและไม่ใช่ขอบเขตของสมุดงาน
Ron Rosenfeld

@SeanL ไม่จำเป็นต้องสร้างช่วงชื่อที่ซ้ำกันตั้งแต่ช่วงชื่อเป็น / สามารถเข้าถึงได้ทั่วทั้งเวิร์กบุ๊ก! และจำไว้เสมอว่า Excel ไม่อนุญาตให้สร้าง NAME ที่ซ้ำกันในช่วงที่แตกต่างกัน!
Rajesh S
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.