这里lstName是Access表单中列表框的名称。
Private Sub cmdUp(lstName As String, SQLName As String, IDName As String, ColumnName As String)
Dim sText As String
Dim pText As String
'check: only proceed if there is a selected item
If lstName.ItemsSelected.Count = 1 Then
(...)
调用程序后:
Call cmdUp(lstSchemaName.Name, "eo_ListSchema", "SchemaID", "SchemaName")
我在这一行得到错误:
If lstName.ItemsSelected.Count = 1 Then
错误是:
Invalid Qualifier
所以基本上VBA不能理解lstName。是一个列表,从中可以找到选择的项目数。 我发现在VBA中“字符串不是对象,因此字符串变量上没有可以调用的方法”。
应该有一个简单的解决方案,但我找不到它。如何处理这类问题?
非常感谢任何帮助!
Edgaras
答案 0 :(得分:1)
您可以将列表框作为列表框传递,字符串不具有任何属性,或者您可以传递字符串和表单对象,这可能更安全。
Call cmdUp(Me, lstSchemaName.Name, "eo_ListSchema", "SchemaID", "SchemaName")
Private Sub cmdUp(frm as Form, lstName As String, _
SQLName As String, IDName As String, ColumnName As String)
Frm(lstName) ...
答案 1 :(得分:1)
lstName
将只是列表框的字符串名称,而不是实际的列表框实例。
由于此lstName
是字符串,因此调用lstName.ItemsSelected
无效。
您应该能够通过列表框:
Private Sub cmdUp(lstBox As ListBox, SQLName As String, IDName As String, ColumnName As String)
...
然后使用:
调用它Call cmdUp(lstSchemaName, "eo_ListSchema", "SchemaID", "SchemaName")
答案 2 :(得分:1)
您需要将ListBox作为列表框传递给cmd Up程序
Private Sub cmdUp(lstName As ListBox, SQLName As String, IDName As String, ColumnName As String)
或使用其名称找到适当的控件,如:
Dim myListBox As ListBox = Me.FindControl(lstName)
if myListBox.ItemSelected.Count = 1 Then
...