ดังนั้นฉันจึงมีกล่องรายการที่มีค่าอยู่ เป้าหมายคือการคลิกที่รายการ จากนั้นเติมกล่องรายการแยกต่างหากด้วยข้อมูลที่ตรงกัน ฉันสามารถจัดการการจับคู่และจำนวนประชากรสำหรับกล่องรายการที่สองได้ แต่ตอนนี้โค้ดของฉันจะไม่ส่งคืนค่าเมื่อฉันเลือกรายการในกล่องรายการแรก ฉันเห็นว่าค่าของฉันไม่ได้รับการส่งคืนเนื่องจากโค้ดแตกในบรรทัดที่ฉันตั้งค่าของเซลล์เป็นตัวแปร "ชื่อ" ที่ฉันใช้:
Private Sub ListBox1_Click()
Dim iCnt As Long
Dim name As Variant
For iCnt = 0 To Me.ListBox1.ListCount - 1
If ListBox1.Selected(iCnt) = True Then
name = Me.ListBox1.List(iCnt)
ThisWorksheet.Sheets("Program").Range("K6").Value = name
End If
'subsequent match and populate will go here.
End Sub
ฉันจะแก้ไขไวยากรณ์ให้ส่งคืนค่าสตริงของรายการที่เลือกได้อย่างไร เพื่อที่ฉันจะได้ใช้สำหรับการจับคู่ครั้งต่อไปได้
Next iCnt
ของคุณอยู่ที่ไหน? - person Tom   schedule 14.10.2019ThisWorksheet.Sheets("Program")….
ไม่ถูกต้องและจะทำให้เกิดข้อความแสดงข้อผิดพลาด ควรเป็น:ThisWorkBook.Worksheets("(Program")...
หรืออ้างอิงถึง.CodeName
ของชีต 2).List
ต้องใช้การอ้างอิงแบบ 2 มิติ รวมถึงแถวที่ใช้ 0 บวกด้วยดัชนีคอลัมน์ ไม่ใช่แค่ (ListBox1.List(iCnt)
, 3) คุณไม่จำเป็นต้องวนซ้ำไปยังรายการกล่องรายการทั้งหมดเพื่อรับListBox1.ListIndex
แบบอิงศูนย์จริง, 4) หลีกเลี่ยงการล้างข้อมูลตัวแปรname
กล่าวคือ อย่าโอเวอร์โหลดชื่อเมธอดหรือฟังก์ชันที่มีอยู่ซึ่งคุณอาจประสบปัญหาได้ - person T.M.   schedule 14.10.2019