VBA列表框能否显示两个值?

VBA列表框能否显示两个值?,vba,excel,listbox,userform,Vba,Excel,Listbox,Userform,我有一个组合框作为我的用户表单中的列表框。Combobox设置为显示2列值,但当选择一个listbox值时,只显示第1列中的值 是否可以显示两个值-就像listbox中的两列值一样 由于我在初始化userform方面的工作而提出的问题。当它初始化时,它应该显示特定的数据,但如果它在大多数情况下只显示1个列值,它就没有用了 Private Sub UserForm_Initialize() zmienna = Klient_kraj.Controls("klient").ListIndex u


我有一个组合框作为我的用户表单中的列表框。Combobox设置为显示2列值,但当选择一个listbox值时,只显示第1列中的值

是否可以显示两个值-就像listbox中的两列值一样

由于我在初始化userform方面的工作而提出的问题。当它初始化时,它应该显示特定的数据,但如果它在大多数情况下只显示1个列值,它就没有用了

Private Sub UserForm_Initialize()

zmienna = Klient_kraj.Controls("klient").ListIndex

us.ColumnCount = 2
us.List = Range("us").Value

If Not Klient_kraj.Controls("klient").Value = "" Then
    nip.Value = Range("klienci").Cells(1 + zmienna, 1).Offset(0, 1).Value

    'problem starts here
    us.Value = Range("klienci").Cells(1 + zmienna, 1).Offset(0, 3).Value 
End If

End Sub

只需将组合框的列计数设置为2。我真的不明白问题出在哪里

编辑:

这里有一个可能的解决方法。使组合框足够宽,以便在两列中显示必要的值。将标签控件放置在组合框上第二列的位置,但确保标签控件的右侧不与组合框的下拉箭头重叠。将标签的“背景样式”属性设置为“透明”。在组合框的更改事件中放置以下代码:

Private Sub ComboBox1_Change()

    Me.Label1.Caption = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 1)

End Sub

另一个解决办法是不需要
标签

Private Sub ComboBox1_Change()
    With Me.ComboBox1
        'The if is there to control the unwanted trigger of this code
        If .Value <> "" And InStr(.Value, vbTab) = 0 Then
            .Value = .Value & vbTab & .Column(1)
        End If
    End With
End Sub
Private子组合框1_Change()
和我一起
'if用于控制此代码的不需要的触发器
如果.Value“”和InStr(.Value,vbTab)=0,则
.Value=.Value&vbTab和.Column(1)
如果结束
以
端接头

我有一个组合框用作列表框
糟糕的方法:p我不认为你可以显示两列,除非你用空格和
|
伪造它,但请不要这样做:p添加一个标签来伪造第二列怎么样,一旦你得到2列,然后隐藏标签?我不知道我在这里说的是什么;)@我知道你的意思,总是有变通办法的。我想知道这是否可能。还有一个。。。使用combobox作为列表框有什么问题?这将在下拉列表中显示2列,但一旦选择了相应的行,combobox中只会显示1个值。现在我明白你的问题了。所以。。。如果没有mehow编写的解决方法,仍在等待。我将Combobox1更改为
us
-我的ComboxBox的名称-第行出现错误:
。Value=.Value&vbTab&.Column(1)
表示:无法设置Value属性。无效的属性值。@lowak;所以,你所做的就是和我一起更改
Private Sub-us\u change()
,然后将代码粘贴到你的用户表单的编码模块中,它会弹出这个错误?当您单击下拉列表时,您是否在组合框中看到任何值?是的,我确实根据我的代码更改了所有内容,并弹出错误。当我单击下拉列表时,我会看到给定范围内所有数据的列表。其他行根据在不同组合框中选择的内容设置值:
us.value=Range(“klienci”).Cells(1+zmienna,1).Offset(0,3).value
@lowak;我认为您必须调整我发布的代码中的
if
语句,以使其适合您。该错误可能会弹出,因为当您修改组合框的
.Value
时,它会触发
组合框1\u Change()
事件。另外,我也读过
应用程序。EnableEvents
不适用于控件(如组合框),所以您必须坚持使用
if
。我认为问题出在其他地方。。。您的代码应该显示第一列和第二列中的值。这可能是一个很好的解决方案,但是它可能不适合我列出的值。Combobox允许我从包含2列的列表中选择值,但仅显示1个值。因为它是一个封闭列表,所以它可能不会显示列表之外的任何内容—比如您的代码。所以我唯一能想到的可能就是这个由mehow和Excel开发人员发布的假标签。