我有一个组合框和一个文本框。组合框按字母顺序排序,有五个项目。 “APPLE”“BEAR”“CAT”“DOG”“ELK”。在数据库中,它们以权重列出
APPLE称重2,BEAR重100,CAT重7,DOG重20,ELK重30,
我想改变组合框,根据我在Lost_Focus上输入的重量选择合适的动物。所以我有
For i = 0 To 4
If txtField.Text = Me.cmbAnimal.ItemData(i) Then
Me.cmbAnimal.ListIndex = i
End If
Next i
然而,这是将重量与动物名称进行比较。我怎么能改写这个?
答案 0 :(得分:2)
在示例中,您有2个不同的组合框:cmbAnimal
和cmbSeqCarrier
。你在用哪一个?
您对使用ItemData有正确的想法(假设它存储了动物的重量)。在下面的示例中,ItemData
属性保存权重。如果Text1
是您输入权重的框,则下面的示例应该执行您要求的任务。
'Load weights with the names to a combobox
Private Sub Form_Load()
cmbAnimal.AddItem "APPLE"
cmbAnimal.ItemData(cmbAnimal.NewIndex) = 2
cmbAnimal.AddItem "BEAR "
cmbAnimal.ItemData(cmbAnimal.NewIndex) = 100
cmbAnimal.AddItem "CAT"
cmbAnimal.ItemData(cmbAnimal.NewIndex) = 7
cmbAnimal.AddItem "DOG"
cmbAnimal.ItemData(cmbAnimal.NewIndex) = 20
cmbAnimal.AddItem "ELK"
cmbAnimal.ItemData(cmbAnimal.NewIndex) = 30
End Sub
如果您将权重加载到ItemData
,那么这将正常工作:
Private Sub Text1_LostFocus()
Dim i As Integer
For i = 0 To cmbAnimal.ListCount - 1
' compare weight entered into text box with weights stored in the combobox
If Trim(cmbAnimal.ItemData(i)) = Trim(Text1.Text) Then
cmbAnimal.ListIndex = (i)
Exit For
End If
Next i
End Sub