从excel vba中的组合框中删除空白但保留索引

时间:2014-10-17 21:38:52

标签: excel vba excel-vba combobox

所以我从数据库中提取数据以填充组合框。每个值作为与之关联的ID,我使用该ID作为值的组合框中的索引。因此,如果ID是2,我将它放在索引2中。第一个问题是,如果我没有在盒子中填充某些东西,我使用空白,它不会让我使用指数。因此,如果我没有填充至少10个空白,我就无法在索引10处使用ID为10的值。另一个问题是存在差距。因此,如果我输入索引为2,3,5,7,8,10的值,则在0,1,4,6,9处有空格。有没有办法摆脱空白但保留索引?任何和所有的帮助表示赞赏。感谢。

这就是我将值放入组合框的方法。我使用DEPOT_ID作为索引。

ComboBox1.AddItem rs![DEPOT_NAME], rs![DEPOT_ID]

1 个答案:

答案 0 :(得分:0)

您需要使用临时结构作为地图或字典。

在VBA中创建一个数组,然后在为组合框记录时,使用组合框索引将项目分配给真实索引。然后,当它被选中时,您可以将索引拉出数组。

自从我写vba以来已经很长时间了,所以这可能很糟糕。

例如

Dim ComboBoxIndexs(100) As Integer 
Dim ArrayIndex as Integer
Dim SelectedIndex as Integer
Dim SelectedDepotID as Integer

'for each combo box item (I can't remember loops in vba)
'allocating to each item
ComboBox1.AddItem rs![DEPOT_NAME], rs![DEPOT_ID]

ComboBoxIndexs(ArrayIndex) = rs![DEPOT_ID]
ArrayIndex = ArrayIndex +1;

'end of for loop.

'When you select an item and want to read it.


 SelectedIndex = Combobox1.Value

 'now get your depot id from array
 SelectedDepotID = ComboBoxIndexs(SelectedIndex)