ฉันมีค่าในคอลัมน์ D ของแผ่นงาน (Sheet2) ในเวิร์กบุ๊กที่มีค่าที่ได้มาจากสูตรเพื่อให้ได้เพียงส่วนสุดท้ายของค่าที่ยาวกว่าในเซลล์คอลัมน์ C ค่าที่มากกว่านั้นจะถูกป้อนโดยอัตโนมัติในคอลัมน์ C ผ่านการดับเบิลคลิก บนแผ่นงานแยกต่างหาก (Sheet5) ฉันมีรายการค่าในคอลัมน์ C ของแผ่นงานนั้น หากค่าใด ๆ ในคอลัมน์ D ของ Sheet2 เท่ากับค่าใด ๆ ในคอลัมน์ C ของ Sheet5 ฉันต้องการเซลล์ในคอลัมน์ F ของ Sheet2 เพื่อเปลี่ยนเป็นสีแดง เมื่อเซลล์คอลัมน์ F ใน Sheet2 เป็นสีแดงขึ้นอยู่กับค่าในคอลัมน์ D ฉันต้องการให้เซลล์สีแดงสามารถคลิกได้ซึ่งจะนำผู้ใช้ไปยังชีตอื่นที่แสดงรายการค่าอ้างอิงที่สัมพันธ์กับค่าในคอลัมน์ D รหัสด้านล่าง ทำแค่นั้น
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range: Set c = Union(Range("D7:D446"), Range("F7:F446"))
Dim CellF As Range, CellD As Range, Cell As Range
If Not Application.Intersect(c, Range(Target.Address)) Is Nothing Then
Set CellF = Range("F" & Target.Row)
Set CellD = Range("D" & Target.Row)
If CellF.Value <> "" And getMacroDictionary.Exists(CellD.Text) Then
CellF.Interior.ColorIndex = 3
Else
CellF.Interior.ColorIndex = 0
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim key As String, dic As Object
Set sourceRange = Nothing
If Target.Column = 6 And Target.Cells.Count = 1 And Target.Interior.ColorIndex = 3 Then
Set sourceRange = Target
Set dic = getMacroDictionary
key = Target.Offset(0, -2).Value2
If dic.Exists(key) Then Application.Run dic(key)
End If
End Sub
Function getMacroDictionary() As Object
Dim dic As Object
Set dic = CreateObject("SCripting.Dictionary")
dic.Add "1000GP", "gotoref1"
dic.Add "1000MM", "gotoref2"
dic.Add "19FEST", "gotoref3"
dic.Add "20IEDU", "gotoref4"
dic.Add "20ONLC", "gotoref5"
dic.Add "20PART", "gotoref6"
dic.Add "20PRDV", "gotoref7"
dic.Add "20SPPR", "gotoref8"
dic.Add "22DANC", "gotoref9"
dic.Add "22LFLC", "gotoref10"
dic.Add "22MEDA", "gotoref11"
dic.Add "530CCH", "gotoref12"
dic.Add "60PUBL", "gotoref13"
dic.Add "74GA01", "gotoref14"
dic.Add "74GA17", "gotoref15"
dic.Add "74GA99", "gotoref16"
dic.Add "78REDV", "gotoref17"
Set getMacroDictionary = dic
End Function
ฉันคิดว่าวิธีที่ดีที่สุดในการหลีกเลี่ยงการเขียนโค้ดแบบยากคือการสร้างอาเรย์ ในส่วนย่อยแรกคุณจะเห็นความคิดเห็นของ snip ของรหัสฉันพยายามทำ แต่ฉันไม่แน่ใจว่าฉันจะเรียกมาโครต่าง ๆ ได้อย่างไรเนื่องจากพวกมันเกี่ยวข้องกับค่าบางอย่าง
ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ !