首页 > 解决方案 > 使用列表框中的数据填充 Excel 文本框表单,显示访问表中的数据 - 错误 381

问题描述

我有一个 Excel 表单中的列表框,它仅显示 4 个字段(Código、Descripción、UnidDistr、Precio)的访问表中的 1 个字段(Descripción)。在列表框中的选定数据上按 Enter 应该会将 4 个字段填充到 4 个文本框中,但它只复制代码和描述字段,然后显示错误 381。有人知道为什么吗?

填充列表框的代码是:(注意:当我使用excel表格时有效)

Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
    With ListBox1
        Txt_Codigo.Value = .List(.ListIndex, 0)
        Txt_Descripción.Value = .List(.ListIndex, 1)
        Txt_Unid_Distr.Value = .List(.ListIndex, 2)     '-------> Error - 381
        Txt_Precio_Lista.Value = .List(.ListIndex, 3)
    End With
End If
End Sub 

列表框属性:

    .ColumnCount = Rs.Fields.Count
    .ColumnWidths = "0;120;0;0"

填充列表框:

Rs.MoveFirst
i = 0
With Form_Buscar_Productos.ListBox1
    Do
        .AddItem
        .List(i, 0) = Rs![CÓDIGO]
        .List(i, 1) = Rs![DESCRIPCIÓN]
        .List(i, 2) = Rs![UNIDDISTR]
        .List(i, 3) = Rs![PRECIO]
        i = i + 1
        Rs.MoveNext
    Loop Until Rs.EOF
End With

标签: excelvba

解决方案


我忘记告诉你的一件事是,当我在文本框 Txt_Descriptción 中写一些东西时,它会过滤列表框中的信息,当我在列表框中选择一项时,它会更新 Txt_Descriptción 值,因此 ListIndex 值也会发生变化。这就是它显示错误 381 的原因。解决方案是更改填充文本框的顺序,因此 Txt_Descriptción 是最后一个。

With ListBox1
        Txt_Codigo.Value = .List(.ListIndex, 0)
        Txt_Unid_Distr.Value = .List(.ListIndex, 2)
        Txt_Precio_Lista.Value = .List(.ListIndex, 3)
        Txt_Descripción.Value = .List(.ListIndex, 1)
End With  

这样就解决了问题。在这种情况下,其他人帮助了我,但还是谢谢你。


推荐阅读