Vba 访问列表框属性时出现无效的限定符错误
此处lstName是Access表单中列表框的名称Vba 访问列表框属性时出现无效的限定符错误,vba,ms-access,Vba,Ms Access,此处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
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不能理解这个名称。是一个列表,它应该从中查找选择了多少项。
我发现在VBA中“字符串不是对象,所以字符串变量上没有可以调用的方法”
应该有一个简单的解决办法,但我找不到。如何处理这类问题
非常感谢您的帮助
Edgaras您可以将listbox作为listbox传递,字符串将不具有任何属性,或者可以传递字符串和表单对象,这样可能更安全
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) ...
lstName
传入时,它将只是listbox的字符串名称,而不是实际的listbox实例
由于此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")
您需要在cmdUp过程中将ListBox作为Lsitbox传递
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
...