Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Excel 选择后如何在组合框中显示第二列?_Excel_Vba - Fatal编程技术网

Excel 选择后如何在组合框中显示第二列?

Excel 选择后如何在组合框中显示第二列?,excel,vba,Excel,Vba,我可以单击我的组合框并查看Column1和Column2的值,但在我单击组合框的开/关后,Column1中的值始终显示,我希望Column2的值显示出来 我试过这个: With ComboBox2 .Value = "None" .ColumnHeads = True .ColumnCount = 2 .ColumnWidths = "50;100" .RowS

我可以单击我的组合框并查看Column1和Column2的值,但在我单击组合框的开/关后,Column1中的值始终显示,我希望Column2的值显示出来

我试过这个:

        With ComboBox2
            .Value = "None"
            .ColumnHeads = True
            .ColumnCount = 2
            .ColumnWidths = "50;100"
            .RowSource = "SetupQuestions!A42:B48"
            .BoundColumn = 2
        End With
Private Sub ComboBox2_AfterUpdate()
    ComboBox2.Value = ComboBox2.Column(2)
End Sub
这并没有像我想的那样设定值

我试过这个:

        With ComboBox2
            .Value = "None"
            .ColumnHeads = True
            .ColumnCount = 2
            .ColumnWidths = "50;100"
            .RowSource = "SetupQuestions!A42:B48"
            .BoundColumn = 2
        End With
Private Sub ComboBox2_AfterUpdate()
    ComboBox2.Value = ComboBox2.Column(2)
End Sub
这并没有像我想的那样设定值

选择后,如何强制组合框在第2列中显示值?

Argh!这不是价值

是的,文本

Private Sub ComboBox2_AfterUpdate()
    Me.ComboBox2.text = Me.ComboBox2.Column(1)
End Sub

如果你只关心外表,有一个解决办法

Private Sub ComboBox2_Click()

With ComboBox2
    .Text = .List(.ListIndex, 0) & " | " & .List(.ListIndex, 1)
End With

End Sub

我来这里是因为我也想解决这个问题。但是其他人的反应帮助我找到了答案。 如果你还没有得到它,这是我的解决方案

Private Sub ComboBox_AfterUpdate()

  ComboboxList.Text = ComboboxList.Column(0) & " " & ComboboxList.Column(1)

End Sub

您可以在没有VBA的情况下使用的替代方法

组合行源根据您的情况进行调整:

SELECT Adults.aID, Trim([Adults].[LastName]) & ", " & Trim([Adults].[FirstName]) AS Expr1 
FROM Adults WHERE ((Not (Adults.LastName)=("isNull"))) 
ORDER BY Adults.LastName, Adults.FirstName; 
基本上,通过SQL将第二列设置为复合单字段

绑定列:1,列数:2,列宽:0cm;4厘米


通过将字符串表示构建为单个字段,您可以使用此技术显示任何需要的内容。

原因在于您的ColumnWidth设置。您的组合框显示两列。第二个无法显示,因为框的总宽度不足。因此,您只能看到第一列。将ColumnWidth设置为0;100,您将看到第二列。确保框的宽度与要在其中显示的列的宽度之间存在工作关系。

组合框的下拉列表可以显示多个列,但选择一行后,它只能将一列显示为文本。要显示第二列,请使用属性列

Me.ComboBox1.TextColumn = 2

使用组合框右侧的文本字段。将组合框中的列数设置为2。 将列表宽度设置为组合框和文本的大小a+b 为组合框的大小和文本a的大小设置列宽;B 由于columns属性是基于0的列数组,因此将文本字段的源设置为=[MyCombo].Columns1以显示第二个字段。 下拉时,第一列应正好位于组合框下方,第二列位于文本框下方。 更新组合时,文本框应相应地更新其值。
此外,您可能希望将文本框属性锁定为true,启用为false。

实际上,它仍然没有执行我希望它执行的操作。它仍在第1列中显示值或文本。我真的很想在我从组合框中选择值后在第2列中看到值。我认为你不能用组合框来做这件事。改用列表框。有没有办法显示第一列和第二列?