Excel VBA เพื่อเรียกแมโครเดียวโดยการเปลี่ยนแปลงแผ่นงานอิสระหลายรายการ

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

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(True, True) = "$H$2" Then
    Select Case Target
        Case "Yes"
            Call StandardEntry
        Case Else
            'Do nothing
    End Select
End If
End Sub

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

ฉันขอขอบคุณความช่วยเหลือในการเขียนโค้ดที่เหมาะสมหรือปรับเปลี่ยนโค้ดด้านบนให้เหมาะสม


person ManbyRiver    schedule 03.11.2016    source แหล่งที่มา
comment
StandardEntry ซึ่งคุณไม่แสดง จะเป็นส่วนหนึ่งของวิธีแก้ปัญหาที่นี่ ดังนั้นอาจจะแสดงมันออกมาก็ได้   -  person Tim Williams    schedule 03.11.2016
comment
คุณหมายถึงคุณเพียงต้องการเรียกใช้ StandardEntry เมื่อเซลล์ใดๆ ในคอลัมน์ H มีการเปลี่ยนแปลงและมีค่าเป็น Yes ใช่หรือไม่ หากเป็นเช่นนั้น อาจเปลี่ยน If Target.Address(True, True) = "$H$2" Then เป็น If Target.Column = 8 Then (แต่ถ้านั่นคือสิ่งที่คุณหมายถึง คำที่ต่อเนื่องกันในคำถามของคุณอาจทำให้สับสน)   -  person YowE3K    schedule 03.11.2016
comment
@ YowE3K ใช่นั่นคือสิ่งที่ฉันหมายถึงและการเปลี่ยนรหัสทำงานได้อย่างสมบูรณ์แบบ ขอบคุณ! ตอนนี้ฉันจะแก้ไขคำถามของฉันเพื่อขจัดความสับสนแล้วเพิ่มสิ่งนี้เป็นคำตอบ ขอบคุณอีกครั้ง. ฉันขอขอบคุณความช่วยเหลือของคุณ   -  person ManbyRiver    schedule 03.11.2016


คำตอบ (1)


ขอบคุณ @YowE3K!

การเปลี่ยนแปลง

If Target.Address(True, True) = "$H$2" Then

to

If Target.Column = 8 Then

ทำเคล็ดลับและเป็นวิธีแก้ปัญหาที่ง่ายมาก! ยีฮาร์!

person ManbyRiver    schedule 03.11.2016
comment
อย่าลืมว่า Target อาจเป็นช่วงหลายเซลล์ได้ และ Target.column จะส่งกลับคอลัมน์ของเซลล์บนซ้ายในช่วงที่ใหญ่กว่า... - person Tim Williams; 03.11.2016
comment
ใช้ Target.Cells.Count <> 1 หรือ For Each rng In Target, Dim rng As Range และ If rng.Column = 8 Then - person user3819867; 03.11.2016