Excel 在组合框中以不同的值显示文本

Excel 在组合框中以不同的值显示文本,excel,vba,Excel,Vba,有没有一种方法可以在组合框列表中显示一个项目,但给它一个不同的值 假设我的列表中有1-03表示1'3,但我希望为其指定1.25的值,以便我的公式能够正确计算 Private Sub UserForm_Activate() 'Values for cmbxSpans cmbxSpans.AddItem "1-03" End Sub 否。Excel不在Listi中的项目条目上提供其他属性来区分显示值和实际值。列表框中的项目存储为字符串。如果您想要双重表示,即1-03=1.25,则必须在添加/读

有没有一种方法可以在组合框列表中显示一个项目,但给它一个不同的值

假设我的列表中有1-03表示1'3,但我希望为其指定1.25的值,以便我的公式能够正确计算

Private Sub UserForm_Activate()

'Values for cmbxSpans
cmbxSpans.AddItem "1-03"

End Sub

否。Excel不在Listi中的项目条目上提供其他属性来区分显示值和实际值。列表框中的项目存储为字符串。如果您想要双重表示,即1-03=1.25,则必须在添加/读取项目时处理转换

下面是一组基于1-03示例的转换


有很多方法,你能展示一下你的尝试吗?我现在什么都没有。我甚至不知道一种方法。我所拥有的只是我的combobox的.AddItem 1-03。通过cobobox值显示combobox循环的代码,如果value=1-03,则添加,然后计算value=1。25@phil652-我相信马克在问,1-03=1.25,因为1'3等于1.25英尺。所以1-06将=1.5,因为它是1'6可能我不明白,但这似乎没有回答原始问题。我做了一个编辑,以澄清对原始问题的回答。这不能用额外的代码来处理转换,这是我昨天在没有适当上下文的情况下开始使用的。
Private Sub CommandButton1_Click()

    ListBox1.AddItem "1-03"

    'read item
    Dim height As Double
    height = FormatToNumber(ListBox1.List(0))

    'do some math
    height = height * 2

    'add it back it
    ListBox1.AddItem NumberToFormat(height)

End Sub

Function FormatToNumber(str_feet_inch As String) As Double
    Dim values As Variant

    'split based on -
    values = Split(str_feet_inch, "-")

    'do the math, using 12# to ensure double result
    FormatToNumber = values(0) + values(1) / 12#
End Function

Function NumberToFormat(val As Double) As String

    Dim str_feet As String
    Dim str_inch As String

    str_feet = Format(Int(val), "0")
    str_inch = Format((val - Int(val)) * 12, "00")

    NumberToFormat = str_feet & "-" & str_inch


End Function