ฉันเป็นมือใหม่ใน 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