【问题标题】:VBA Use one column from multi column combo box as variableVBA使用多列组合框中的一列作为变量
【发布时间】:2017-08-07 10:16:38
【问题描述】:

我有以下代码在显示客户端和 ID 的用户窗体中生成一个多列组合框。我必须将两列都生成为 Client 并多次列出,但 ID 是唯一的。

i = 2

For Each c In Range("D2", Range("D" & Rows.Count).End(xlUp))
    CB_Account.AddItem Cells(i, 4).Value & " : " & Cells(i, 3).Value
    i = i + 1

Next

但是,我使用选择的值过滤工作表,以便我可以将客户详细信息复制到新工作表并将所选值用作变量:

MyAccount = UF_Format.CB_Account.Value

代码当前正在失败,因为组合框中的值在两列的串联中。真的,我只需要通过第二个值作为 ID,以便我的代码可以过滤。

任何帮助将不胜感激。

【问题讨论】:

  • 这取决于第 4 列和第 3 列的值。如果您可以假设第 3 列始终是三个字符长,那么您可以用户 Right,如果您知道第 4 列仅包含字母,您可以匹配一个模式以忽略字母和“:”并取其余部分。如果没有简单的方法,您可能需要更改分隔符,例如到一个'|'。
  • 顺便说一句,我不会将其称为多列组合框,它只是具有从 Excel 工作表的多列连接的值。

标签: vba excel


【解决方案1】:

您可以将变量MyAccount 声明为数组,然后使用冒号作为分隔符拆分组合框值。然后,您可以使用数组的第二项。

Sub second_value()
    Dim MyAccount() As String

    MyAccount = Split(UF_Format.CB_Account.Value, " : ")
    Debug.Print MyAccount(1)
End Sub

【讨论】:

  • 除非第 3 列或第 4 列可以包含 ':'。而且我会提供“ : ”(包括空格)作为 Split 的第二个参数,因此您不需要 Trim 结果,这也可能有其他效果。
  • @z32a7ul 关于使用“ : ”作为分隔符是正确的,我会更新答案。我不希望名称或 ID 包含冒号,但您当然需要考虑到这一点 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
相关资源
最近更新 更多