Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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_Combobox - Fatal编程技术网

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

加载时为多列组合框vba赋值,vba,ms-access,combobox,Vba,Ms Access,Combobox,我知道问这个问题太天真了,但我被她迷住了,在互联网上找不到解决办法。我有一个组合框,里面有4列,其中3列是看不见的,一列是。在可见列中,我希望在加载表单时显示pname(字符串)的值。 我试过: 在前两行中,组合框只显示With.text属性,它给了我一个错误(2135属性只读,无法定义) 你有什么建议? 提前感谢。您需要向组合框添加一个项目,如下所示: cboPlanName.AddItem pname 如果pname是一个值数组,则 For Each pnameVal in pname

我知道问这个问题太天真了,但我被她迷住了,在互联网上找不到解决办法。我有一个组合框,里面有4列,其中3列是看不见的,一列是。在可见列中,我希望在加载表单时显示pname(字符串)的值。 我试过:

在前两行中,组合框只显示With.text属性,它给了我一个错误(2135属性只读,无法定义)

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

您需要向组合框添加一个项目,如下所示:

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
添加到模块的顶部,而不是用户表单,这将允许将变量传递到另一个子模块,而不会丢失它的值,其中3个是隐藏的。我所做的是通过combobox的所示列的值进行循环,当值与字符串(pname)匹配时,我将combobox的所选值设置为匹配的值,换句话说,值在列表中,代码查找与字符串(pname)相等的值并选择它

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

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

你把所说的代码放在哪里了,在
表单_Load
中?在子表单_Open@Nathan_savpname中是否有值,是否在列表中,限制列表等。?你能在你的代码中再显示一点吗?没有pname不在列表中,它是一个包含像“test”这样的值的字符串。我想在表单加载@Nathan时在组合框中显示这个值_Sav@Marwan请参阅下面的答案,让我知道这是否适用于您?当我将值添加到列表中时,它会给我一个错误:必须将属性源设置为值列表值才能使用此方法。如果不将值添加到列表中,则无法显示该值@BurnsAt先生在Sub的开头,或者在您尝试将
pname
添加到组合框之前,输入此
Debug.Print pname
,并让我知道返回了什么值(
Crtl+G
以查看返回了什么值)@MarwanIt给出了需要的值测试。我试图以表单_Activate()的形式编写代码,但代码似乎没有执行,当我以子表单_Open()编写代码时,它崩溃了。@Mr。Burns@Marwan我现在明白了,给我几分钟时间,我会更新我的答案,但它仍然不起作用,我修改了我的Queston plase,看看它,也许你可以看到问题出在哪里。顺便说一句,我没有将值从aform传递到其他表格@Mr.Burns
    For j = 0 To cboPlanName.ListCount - 1
      IF cboPlanName.Column(1, j) = pname Then
         Me.cboPlanName = cboPlanName.ItemData(j)
      End If
    Next j