Найти местоположение ячейки на основе значения, а затем сделать что-то - пользовательские формы VBA Excel

У меня есть опыт программирования, однако я новичок в VBA. У меня есть форма пользователя, над которой я работаю. Эта форма имеет поле со списком, который имеет список, инициализированный к нему. Что я пытаюсь сделать, это:

* Получить значение идентификационного номера, введенное пользователем из ComboBox * Возьмите значение, введенное пользователем, и найдите его соответствие, используя диапазон значений из рабочего листа (т.е. Worksheet.Range (& quot; ID_Number_List & quot;)) * Как только он получит совпадение, определите местоположение ячейки, которой он соответствует * Выкл. Установить местоположение ячейки на один столбец, чтобы получить имя, которое относится к идентификатору (та же строка), и установить его в textBoxName.Value. * Выкл. Установите два столбца, чтобы получить номер телефона, который относится к идентификационному номеру, и установите его в textboxTele.value.

Я хочу, чтобы это произошло, как только значение будет выбрано в комбинированном списке, поэтому мой вопрос: идет ли мой код в поле со списком или он переходит в следующее текстовое поле? поэтому, как только человек перейдет к следующему текстовому полю, код будет автоматически выполнен. Я хотел бы, чтобы код полностью выполнялся без перехода к следующему окну.

Этот код не завершен, но вот что у меня есть (я не добавил смещенную часть, я просто выполнил тест):

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

Дайте мне знать, что вы думаете. Если мне придется переписать все, что я буду.

 Siddharth Rout14 июл. 2012 г., 12:53
Смотрите эту ссылку о том, как использовать .Find () в Excelsiddharthrout.wordpress.com/2011/07/14/…

Ответы на вопрос(1)

Решение Вопроса

Ваш код не компилируется.

Если у вас есть пользовательская форма с одним комбинированным списком ComboBox1, вам нужно поместить код поиска ячейки в код формы следующим образом:

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

Я подозреваю, что при использовании свойства row source поля со списком в сочетании с индексом выбранного значения вам, вероятно, не нужно фактически выполнять поиск выбранного значения. Нечто подобное может работать:

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

Надеюсь, это поможет.

Ваш ответ на вопрос