2016-09-26 4 views
0

Я пытаюсь создать форму пользователя, которая может искать данные и читать их в себе. Для записи я следую this tutorial. Способ моей формы заключается в том, что вам нужно ввести идентификационный номер, чтобы он знал, какие данные вы хотите (вроде как Vlookup в некотором смысле). Проблема в том, что никакие данные не извлекаются, когда я нажимаю кнопку команды! Вот мой код:ExcelVBA: попытка создать пользовательскую форму, которая ищет и считывает данные

Private Sub CommandButton1_Click() 

row_number = 0 
Do 
DoEvents 
row_number = row_number + 1 
item_in_review = Sheets.("Ark1").Cells(row_number, "A") 
    If item_in_review = TextBox1.Text Then 
     TextBox2.Text = Sheets("Ark1").Cells(row_number, "B") 
     TextBox3.Text = Sheets("Ark1").Cells(row_number, "C") 
    End If 
Loop Until item_in_review = "" 

End Sub 

Любая помощь приветствуется.

+0

Мы действительно вам помогли. Теперь настала ваша очередь показать обещанное _appreciation_ и дать некоторую обратную связь. Спасибо – user3598756

ответ

0

Вот что я обычно делаю. Попробуйте загрузить все (или только первый) результат в массив. Чем просто использовать номер этой строки для извлечения всей другой информации.

rowsArray(i) = ActiveSheet.Range("A:A").EntireColumn.Find _ 
       (What:=productsArray(i), _ 
         LookIn:=xlValues, _ 
         LookAt:=xlWhole, _ 
         SearchOrder:=xlByRows, _ 
         SearchDirection:=xlNext, _ 
         MatchCase:=False).Row 
0

Во-первых

Sheets.("Ark1").Cells(row_number, "A")

должен быть

Sheets("Ark1").Cells(row_number, "A")

Тогда я думаю, вы должны сначала проверить любое допустимое значение в TextBox1.Text

нравится следующим :

Option Explcit 

Private Sub CommandButton1_Click() 
    Dim row_number As Long 

    With Me 
     If .TextBox1.Text = "" Then 
      MsgBox "please input valid text in 'TextBox1'", vbExclamation 
      Exit Sub 
     End If 
     Do 
      DoEvents '<-- what's this for? 
      row_number = row_number + 1 
      item_in_review = Sheets("Ark1").Cells(row_number, "A") 
      If item_in_review = .TextBox1.Text Then 
       .TextBox2.Text = Sheets("Ark1").Cells(row_number, "B") 
       .TextBox3.Text = Sheets("Ark1").Cells(row_number, "C") 
       Exit Sub '<--| if you want the first match to fill TextBox2 and TextBox3 
      End If 
     Loop Until item_in_review = "" 
    End With 
End Sub 
Смежные вопросы