由于兼容性问题,我不得不在电子表格中使用Excel 表单控件列表框(与ActiveX)控件。我试图用ADO记录集中的三个字段填充它,但我遇到了问题,因为我已经使用了Form Controls。
这是我为ActiveX列表框编写的代码。您能否指出一个示例,其中从ADO记录集中填充了具有多列的表单控件列表框?
提前感谢您在进行此转化时提供的任何帮助!
- 汤姆
Private Sub Worksheet_Activate()
On Error GoTo Err_Worksheet_Activate
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim i As Integer
Set cnn = New ADODB.Connection
cnn.ConnectionString = gcstr_Connection ' a global property with the connection string defined elsewhere. The connection is to a SQL Server database.
cnn.Open
Set rst = cnn.Execute("SELECT [FieldA], [FieldB], [FieldC] FROM dbo.", , adCmdText)
rst.MoveFirst
With Me.lst_System
.Clear
Do
.AddItem
.List(i, 0) = rst![FieldA]
.List(i, 1) = rst![FieldB]
.List(i, 2) = rst![FieldC]
i = i + 1
rst.MoveNext
Loop Until rst.EOF
End With
Exit_Worksheet_Activate:
On Error Resume Next
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Exit Sub
Err_Worksheet_Activate:
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
Err.Clear
Resume Exit_Worksheet_Activate
End Sub
答案 0 :(得分:0)
不知道Form控件是否可以支持像ActiveX列表框这样的muticolumns,因此您可能需要考虑以不同的方式添加它们。
以下是如何删除所有/添加项目的示例,希望它有所帮助:
'to remove all previous items
Me.Shapes("lst_System").ControlFormat.RemoveAllItems
'to add item
Me.Shapes("lst_System").ControlFormat.AddItem "SomeStringValue"