2016-09-26 2 views
0

데이터를 검색하여 데이터를 읽을 수있는 userform을 만들려고합니다. 기록을 위해 나는 this tutorial을 따릅니다. 내 양식이 작동하는 방식은 원하는 데이터를 알 수 있도록 ID 번호를 입력해야한다는 것입니다 (특정 의미에서 Vlookup과 비슷 함). 문제는 명령 단추를 눌렀을 때 데이터가 검색되지 않는다는 것입니다. 여기 내 코드는 다음과 같습니다.ExcelVBA : 데이터를 검색하고 읽는 userform을 만들려고합니다.

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