Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 访问列表框属性时出现无效的限定符错误_Vba_Ms Access - Fatal编程技术网

Vba 访问列表框属性时出现无效的限定符错误

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

此处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不能理解这个名称。是一个列表,它应该从中查找选择了多少项。 我发现在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
...