在窗体access vba中将多列值添加到列表框
我在access中向listbox中的多个列添加值时遇到问题。 我尝试过这样的解决方案:和这个:,但它不起作用。在我的例子中,Listbox没有属性“List”。我有一个编译错误:在窗体access vba中将多列值添加到列表框,vba,ms-access,Vba,Ms Access,我在access中向listbox中的多个列添加值时遇到问题。 我尝试过这样的解决方案:和这个:,但它不起作用。在我的例子中,Listbox没有属性“List”。我有一个编译错误: Private Sub cmdAddPosition_Click() Dim i As Integer Me.lstAddPositions.ColumnCount = 7 If Me.txtAddPos.Value = i And i > 0 And i < 50 Then Me.lst
Private Sub cmdAddPosition_Click()
Dim i As Integer
Me.lstAddPositions.ColumnCount = 7
If Me.txtAddPos.Value = i And i > 0 And i < 50 Then
Me.lstAddPositions.AddItem (Me.txtAddPos.Value)
'Me.lstAddPositions.AddItem(Me.txtAddPos.Value,(i))
Me.lstAddPositions.List(0, i) = Me.txtAddPos.Value
'Me.lstAddPositions.Column(0, i) = Me.txtAddPos.Value 'adding number of position
'Me.lstAddPositions.Column(2, i) = Me.lstAddHidden.Column(0, 0) 'adding titel
End If
Me.lstAddPositions.Requery
End Sub
Private Sub cmdAddPosition\u Click()
作为整数的Dim i
Me.lstAddPositions.ColumnCount=7
如果Me.txtAddPos.Value=i且i>0且i<50,则
Me.lstAddPositions.AddItem(Me.txtAddPos.Value)
'Me.lstAddPositions.AddItem(Me.txtAddPos.Value,(i))
Me.lstAddPositions.List(0,i)=Me.txtAddPos.Value
'Me.lstAddPositions.Column(0,i)=Me.txtAddPos.Value'添加位置数
'Me.lstAddPositions.Column(2,i)=Me.lstAddHidden.Column(0,0)'
如果结束
Me.lstAddPositions.Requery
端接头
在这种情况下我能做什么?下面是一个完整的示例,说明如何向列表框中添加多个列 要创建表,请执行以下操作:
DROP TABLE Test;
CREATE TABLE Test (TestID AUTOINCREMENT(1, 1),
TestName TEXT,
TestDescription TEXT,
CONSTRAINT TestPKey PRIMARY KEY (TestID));
INSERT INTO Test (TestName, TestDescription)
VALUES ('Test A', 'Testing Record A')";
INSERT INTO Test (TestName, TestDescription)
VALUES ('Test B', 'Testing Record B')";
INSERT INTO Test (TestName, TestDescription)
VALUES ('Test C', 'Testing Record C')";
按钮事件代码:
Private Sub TestButton_Click()
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Dim lb As ListBox
Dim rowStr As String
Set rst = CurrentDb.OpenRecordset("Test")
Set lb = Me.TestListBox
' Set the number of listbox columns to reflect recordset fields
lb.ColumnCount = rst.Fields.Count
' Set the row source type to Value List
lb.RowSourceType = "Value List"
' Erase the listbox data so we can populate it
lb.RowSource = ""
' If ColumnHeads property is enabled, then first record is field
' names. Lets populate those.
If lb.ColumnHeads Then
rowStr = ""
' Build a string for each record
For Each fld In rst.Fields
rowStr = rowStr & replace(fld.Name,",","") & ","
Next
' Strip final comma
rowStr = Left(rowStr, Len(rowStr) - 1)
' Add each record (all fields) at once.
lb.AddItem rowStr
End If
' Loop through each record
Do Until rst.EOF
' Build a record string and add it
rowStr = ""
For Each fld In rst.Fields
rowStr = rowStr & replace(fld.Value,",","") & ","
Next
rowStr = Left(rowStr, Len(rowStr) - 1)
lb.AddItem rowStr
rst.MoveNext
Loop
' Close and release objects
rst.Close
Set fld = Nothing
Set rst = Nothing
Set lb = Nothing
End Sub
如果希望更改listbox内容,则需要清除并重新生成listbox的recordsource属性。根据我的经验,当涉及多个列时,试图修改单个行是行不通的
希望这能有所帮助。下面是一个示例,如果行源是值列表,则可以向access窗体上的多列未绑定列表框添加项。您必须通过创建一个放置在值列表中的字符串来添加它
Private Sub cmdAddPosition_Click()
Dim i As Integer
Me.lstAddPositions.ColumnCount = 7
If Me.txtAddPos.Value = i And i > 0 And i < 50 Then
Me.lstAddPositions.AddItem "Col1" & "," & "col2" & "," & "Col3" & "," & _
"Col4" & "," & "Col5" & "," & "col6" & "," & "col7" &";"
End If
Me.lstAddPositions.Requery
End Sub
Private Sub cmdAddPosition\u Click()
作为整数的Dim i
Me.lstAddPositions.ColumnCount=7
如果Me.txtAddPos.Value=i且i>0且i<50,则
Me.lstAddPositions.AddItem“Col1”和“,”和“col2”和“,”和“Col3”和“,”和_
“Col4”&“,”与“Col5”&“,”与“col6”&“,”与“col7”&”
如果结束
Me.lstAddPositions.Requery
端接头
我不太理解Zaider的答案,但以他的样本为例,我得出了一个适用于我的未绑定列表框的结论:
Me.listbox2.AddItem (Me.listbox1.Column(0) & ";" & Me.listbox1.Column(1))
选择属性 行源类型=>值列表 代码: ListbName.ColumnCount=2 ListbName.AddItem“值列1;值列2”首先为列表框设置以下属性 行源类型:值列表 列数:2 假设列表框的名称为:listName 假设您想在两个不同的列中添加两个不同的元素,并在中存储两个不同的字符串 String1和String2然后按照代码进行操作 代码:
你看到了吗?找到
.List(.ListCount-1,1)=TextBox2.Value
并进行更改以适应您的情况?我仍然对.List有问题,现在甚至对.ListCount也有问题,因为第一个方法不存在,即使在这个列表的方法列表上,我也不能选择这个方法,第二个错误是。ListCount:无效或不合格的referenceDoesn不是我,在您的情况下,必须介于0和6之间?您只有7列,因此只能从列表(0,0)转到列表(0,6)。变量i用于行,它是我可以拥有的最大行数,在一次执行中,此i仅作为一个值。请看ScaryJim的回答:
Dim strName as string
strName=String1&";"&String2
Me.listName.addItem strName