在加载时为多列组合框vba赋值

时间:2017-03-09 11:08:54

标签: vba combobox access

我知道问这个很天真,但我被困在她身上并没有在互联网上找到解决方案。我有一个组合框,其中有4个colmns,其中3个是看不见的,有一个是。在可见colomn中,我想在表单加载时显示pname(一个字符串)的值。 我试过了:

Xi

使用前两行,组合框只会使用.text属性,它会给我一个错误(2135属性只读无法定义)。

你有什么建议? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

好的,我终于找到了解决方案,知道它是4列的组合框,其中3列是隐藏的。我所做的是我循环显示组合框的显示列的值,当值与字符串(pname)匹配时,我将组合框的选定值设置为匹配的值,换句话说值在列表中,代码查找字符串(pname)的相等值并选择它。

    For j = 0 To cboPlanName.ListCount - 1
      IF cboPlanName.Column(1, j) = pname Then
         Me.cboPlanName = cboPlanName.ItemData(j)
      End If
    Next j

感谢那些试图帮助的人,我真的很感激:)

答案 1 :(得分:0)

您需要将项目添加到组合框中,如下所示:

cboPlanName.AddItem pname

如果pname是一个值数组,那么

For Each pnameVal in pname
     cboPlanName.AddItem pnameVal.Value
Next pnameVal

从评论中更新:

您需要将pname添加到public而不是Dim,在您的用户表单顶部输入Public pname as string(如果它不仅仅包含Public pname,则输入Public pname as string字符串)或者如果值来自Sub ina模块,那么您需要将[val idx] = sort(A(:)); 添加到模块的顶部而不是userform,这将允许将变量传递给另一个Sub而不会丢失其值