Vba 如何使用组合框中的价格执行总计计算?

Vba 如何使用组合框中的价格执行总计计算?,vba,windows,winforms,helper,Vba,Windows,Winforms,Helper,我正在尝试在VisualStudio上制作一个项目 我在一个组合框中有以下数据,我想知道如何将价格(CStr值)乘以用户选择的天数,使用计算按钮在另一个文本框中显示总天数 {cmbPedigreeDog.Items.Add("African Hairless" & CStr(1.14)) cmbPedigreeDog.Items.Add("Boxer" & CStr(0.86)) cmbPedigreeDog.Items.Add("Chihuahu

我正在尝试在VisualStudio上制作一个项目

我在一个组合框中有以下数据,我想知道如何将价格(CStr值)乘以用户选择的天数,使用计算按钮在另一个文本框中显示总天数

{cmbPedigreeDog.Items.Add("African Hairless" & CStr(1.14))
        cmbPedigreeDog.Items.Add("Boxer" & CStr(0.86))
        cmbPedigreeDog.Items.Add("Chihuahua" & CStr(1.83))
        cmbPedigreeDog.Items.Add("Dalmation" & CStr(0.65))
        cmbPedigreeDog.Items.Add("Eskimo Dog" & CStr(1.14))
        cmbPedigreeDog.Items.Add("Farm Collie" & CStr(0.95))
        cmbPedigreeDog.Items.Add("GreyHound" & CStr(1.99))
        cmbPedigreeDog.Items.Add("Husky" & CStr(1.85))
        cmbPedigreeDog.Items.Add("Irish Setter" & CStr(0.65))
        cmbPedigreeDog.Items.Add("Jack Russell Terrier" & CStr(1.77))
        cmbPedigreeDog.Items.Add("King Charles Spaniel" & CStr(1.02))
        cmbPedigreeDog.Items.Add("Labrador Retreiver" & CStr(1.74))
        cmbPedigreeDog.Items.Add("Maltese" & CStr(1.47))
        cmbPedigreeDog.Items.Add("Pug" & CStr(1.31))
        cmbPedigreeDog.Items.Add("Rottweiler" & CStr(2.17))
        cmbPedigreeDog.Items.Add("St Bernard" & CStr(1.63))
        cmbPedigreeDog.Items.Add("Tibetan Mastiff" & CStr(1.15))
        cmbPedigreeDog.Items.Add("Working Sheep Dog" & CStr(0.75))
        cmbPedigreeDog.Items.Add("Yorkshire Terrier" & CStr(0.88))
        cmbPedigreeDog.Items.Add("Other" & CStr(1.22))}

这不是最好的方法,它要求combobox中的所有字符串具有相同的模式和相同数量的分隔符

例如: 如果您使用类似于
“Boxer”&CStr(0.86)
“Boxer”&CStr(0.86)(只添加了一个|符号)的东西来代替
,那么您可以像这样将此字符串拆分回去

line = cmbPedigreeDog.Value
price = CDbl(Split(line, "|")(1))
还有一些解释:

每行文本都是符号的容器。每个都可以用一些分隔符拆分为数组。因此,
price=CDbl(Split(line,“|”)行(1))
也可以这样写:

Dim someArray()
line = "Boxer|" & CStr(0.86)

someArray = Split(line, "|")

' after splitting you have two items in array one is "Boxer" and another is "0.86" (which is text)
' if you follow the pattern in each of your combobox options the price always will be the second one
' so you may refer to second item in array, which is number 1

Price = CDbl(someArray(1))
更新

另一种方式,根据评论中的请求。使用两列组合框。要填充组合框,您必须执行以下操作

1-转到ComboBox的属性并将“ColumnCount”值设置为2(请参见如何操作)

2-这取决于您-您可以在工作表上使用价格绑定,如第1页主题I中给出的链接,或者将代码中的每一行更改为以下模式:

With cmbPedigreeDog
    .AddItem ("Boxer")
    .column(1, cbx.ListCount - 1) = 0.86
    .AddItem ("Chihuahua")
    .column(1, cbx.ListCount - 1) = 1.83
    ' and so on
End With
3-要检索所选项目的价格,请使用此代码

If cmbPedigreeDog.ListIndex >= 0 Then 
    price = cmbPedigreeDog.List(cbx.ListIndex, 1) 
Else
    MsgBox "item is not chosen"
End If
更新1


此答案适用于VBA,而不是Visual Basic WinForm应用程序。为此,请尝试寻找类似“多列组合框”的解决方案。

谢谢您的帮助,您能推荐一种更简单的方法吗?即使需要更改LOT,也不要在有关仅在Visual Studio中编写的代码的问题上使用
VisualStudio
标记