【问题标题】:Pulling Data Out of A ComboBox从组合框中提取数据
【发布时间】:2017-07-29 03:27:49
【问题描述】:

我有一个由表格填充的 ComboBox,但是当我填充了我的 ComboBox 时,我将它与一些格式连接起来。

Do
    strValue = "Loc: " & .Fields(0).Value & " Weight : " & .Fields(1).Value

    cbAlloys.AddItem strValue
    rsDB1.MoveNext

Loop Until rsDB1.EOF

所以现在是这样,我只需要获取重量值并输出它,除了重量之外什么都没有。

我试过了:

siBinWeightDescription.Value = cbBinAndWeight.Value
siBinWeightDescription.Value = InStr(6, cbBinAndWeight.Value)

但是,后来意识到Instr只输出计数。

我将如何从 ComboBox 中获取我需要的重量值?

【问题讨论】:

  • 您应该改用多列组合框。那会让你的生活轻松很多。然后,您可以在 AddItem 中使用一个数组,并使用 List(row, col) 属性从所选项目中检索您想要的每条数据。
  • 您还可以创建一个包含文字值的动态数组。然后,根据您的数组中的组合项索引返回值的索引。
  • @braX 不幸的是,我正在编程的环境中的 ActiveX 对象数量有限,我没有这个选项。
  • 我想你不明白。这是同一个组合框。所有组合框都有这种能力。

标签: vba


【解决方案1】:

要回答问题的多列组合框部分:

为 AddItem 使用数组(如果需要,可以将其放入循环中)

  Dim Arr(0 To 1) As String
  Arr(0) = "Col 1"
  Arr(1) = "Col 2"
  cmb.AddItem Arr

并检索所选项目的数据:

cmb.List(cmb.ListIndex, 1)

你也可以像这样为你的列号设置一个枚举:

Enum ColList
  Loc=0
  Weight=1
End Enum

然后检索数据,它看起来像这样(更具可读性的代码)

cmb.List(cmb.ListIndex, ColList.Weight)

另外,您不必使用字段这个词...您可以像这样处理您的记录集:

rsDB1!Weight

【讨论】:

    【解决方案2】:

    将字符串拆分为数组(从零开始)

     debug.print split("Loc: abc Weight : 1234"," ")(4)  ' the second argument is the separator character
    
     debug.print split("Loc: abc Weight : 1234")(4)      ' space is the default separator
    

    都打印 1234

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多