【发布时间】:2020-03-07 09:37:51
【问题描述】:
我正在尝试使用多选列表框,以便用户可以选择他们已完成的清洁任务并将其标记为已完成。在遍历列表时,我想查看是否选择了该项目,如果是,则创建一条记录。当我尝试使用 .List 方法从特定行返回数据时,我不断收到未找到方法的错误。
我最初没有加载表单 2.0 库,所以我认为这是问题所在,但这并没有解决问题。我也进行了压缩和修复,认为这可能只是一个奇怪的侥幸,但这也无济于事。
'loop through values in listbox since its a multi-select
For i = 0 To listCleaningTasks.ListCount - 1
If listCleaningTasks.Selected(i) Then
'add entry to cleaning log
Set rsCleaning = CurrentDb.OpenRecordset("SELECT * FROM cleaning_log;")
With rsCleaning
.AddNew
.Fields("cleaning_task_id") = Form_frmCleaning.listCleaningTasks.List(i)
.Fields("employee_id") = Me.cmbUser
.Fields("cleanroom_id") = Me.cmbCleanroom
.Fields("cleaning_time") = Now()
.Update
.Close
End With
End If
Next i
有什么想法吗?
【问题讨论】:
-
请发布代码,而不是您的代码图片。
-
请不要张贴代码图片。这使得它不仅难以阅读,而且我们无法复制它来创建测试文件和调试/尝试解决方案。请edit您的问题并粘贴到您的实际代码中,使用`标签对其进行格式化。
-
为了回答你的问题,
.list部分完全是多余的。.listCleaningTasks是对您的列表的直接引用,因此.listCleaningTasks(i)将是对该列表中任何一个成员的直接引用。 -
Access 表单是文档模块(与 Excel 中的工作簿/工作表模块相同),它们与 MSForms 库完全无关。
-
我尝试了 Plutian 关于 .listCleaningTasks(i) 的建议并得到了类型不匹配错误。 June7 下面关于使用 .ItemData 而不是 .List 的建议对我有用。