2014-10-17 6 views
1

그래서 데이터베이스에서 데이터를 가져 와서 콤보 박스를 생성합니다. 각 값은 ID와 연관되어 있으며이 ID를 콤보 박스의 인덱스로 사용하고 있습니다. 따라서 ID가 2이면 인덱스 2에 넣을 것입니다. 첫 번째 문제는 상자에 무언가를 채우지 않으면 공백을 사용하여 인덱스를 사용할 수 없다는 것입니다. 따라서 적어도 10 개의 공백을 채우지 않은 경우 색인 10에 ID 10으로 값을 지정할 수 없습니다. 다른 문제는 틈이 있다는 것입니다. 따라서 인덱스 2,3,5,7,8,10으로 값을 넣을 경우 0,1,4,6,9에 공백이 있습니다. 공백을 없애고 색인을 유지할 수있는 방법이 있습니까? 모든 도움을 주시면 감사하겠습니다. 감사.콤보 박스에서 공백을 제거하고 엑셀 vba에서 인덱스를 유지하십시오

이렇게하면 값을 콤보 상자에 넣을 수 있습니다. 색인으로 DEPOT_ID를 사용하고 있습니다.

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

다시 작성한 내용을 읽으려는 시도가 무엇인지에 대한 정보가 * 전혀없는 독자의 입장에서 시도해보십시오. 당신이 우리 중 한 명이었고 질문에 프로젝트에 대해 ** 아무 것도 ** 알지 못했다면, 여기에 무엇이 질문되고 있는지 알아낼 수 있습니까? 나는 할 수 없다. –

+0

나는 틈이있는 색인을 가질 가능성이 없다고 생각합니다. 콤보 박스의 인덱스와 인덱스를 매핑하기 위해 배열이나 무언가가 필요합니다. – NickSlash

답변

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) 
관련 문제