2012-07-05 41 views
0

我有編程經驗,但是,我是VBA的新手。我有一個我正在處理的用戶表單。此表單有一個組合框,其中有一個已初始化的列表。我想要做的是:找到基於值的單元格位置,然後做一些事情 - 用戶窗體VBA Excel

*獲取用戶從組合框中輸入的ID號碼值 *獲取用戶輸入的值,並使用工作表中的一系列值(即Worksheet)查找其匹配值。範圍(「ID_Number_List」)) *獲得匹配後,獲取匹配的單元格的位置 * Off將單元格的位置設置爲一列,以獲取與ID號(相同行)相關的名稱將其設置爲textBoxName.Value *將其設置爲兩列以獲取與ID號相關的電話號碼並將其設置爲textboxTele.value

我希望在Combobox中選擇一個值時立即發生, 所以我的問題是我的代碼是在組合框中進行還是轉到下一個文本框?因此只要人員切換到下一個文本框,代碼就會自動執行。我希望代碼能夠完全執行,而不會跳到下一個框中。

此代碼是不完整的,但這裏是我(我沒有加過設置部分,我只是做了一個測試執行):

Dim ORIValue As String 
'get value from combo_box Set 
ORIValue = COMBO_ORILIST.Value 

Dim cLoc As Range 
Dim cORIVal As Range 

'worksheet with the ID information Dim ORISheetList As Worksheet 
Set ORISheetList = Worksheets("ORI_LIST") 

' 
For Each cLoc In ORISheetList.Range("ORI_LIST") 
'compare the input string from list- considering using Match function for this 
If StrComp(cLoc, ORIValue, vbTextCompare) Then TextBAgencyName.Value = "test" 
Else: Next cLoc 
End If 

讓我知道你在想什麼。如果我必須重寫所有我會的東西。

+0

請參閱此鏈接如何在Excel中使用.Find()http://siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/ –

回答

1

您的代碼不能編譯。

如果你有一個名爲ComboBox1一個組合框一個窗體,你需要把你的查找代碼形式的代碼如下:

Private Sub ComboBox1_Change() 
    MsgBox "yep, this is where the code should go" 
End Sub 

我懷疑組合使用組合框的行來源屬性使用所選值的索引,您可能不需要實際執行所選值的搜索。像這樣的東西可能會工作:

Private Sub ComboBox1_Change() 
    MsgBox Range(ComboBox1.RowSource).Cells(ComboBox1.ListIndex + 1) 
End Sub 

希望有所幫助。

相關問題