2017-04-13 3 views
1

데이터 입력을 위해 사용자 양식을 만들었습니다. 지금은 이미 입력 된 데이터, 일부 데이터가 누락 된 데이터를 조사하고 해당 행의 값을 업데이트하기 위해이를 확장하려고합니다.사용자 양식이있는 행의 값 검색 및 업데이트

검색 기준은 A 열의 표에있는 참조 번호입니다. 그러나이 ID는 찾을 수없는 msg를 반환합니다.

Dim searchRange As Range 
Dim foundCell As Range 
Dim mysearch As String 

mysearch = Me.Reference.Value 

Set searchRange = ThisWorkbook.Sheets("Master Data").Range("A2").End(xlDown) 
Set foundCell = searchRange.Find(what:=mysearch, after:=searchRange.Cells(searchRange.Cells.Count)) 

If Not foundCell Is Nothing Then 
    If foundCell.Offset(0, 1).Value = Me.Reference.Value Then 
     foundCell.Offset(0, 8).Value = Me.Merchant.Value 
    Else 
     MsgBox "Name does not exist." 
    End If 
Else 
    MsgBox "ID does not exist." 
End If 

답변

3

이 시도, 정의와 같은 searchRange 난 당신이 의도하지 가정 단 하나의 세포이다. Find 매개 변수 중 일부만 지정 했으므로, 필자가 생각한 것과 다른 경우가 있습니다.

Sub x() 

Dim searchRange As Range 
Dim foundCell As Range 
Dim mysearch As String 

mysearch = Me.Reference.Value 

With ThisWorkbook.Sheets("Master Data") 
    Set searchRange = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)) 
End With   

Set foundCell = searchRange.Find(what:=mysearch, Lookat:=xlwhole, MatchCase:=False, SearchFormat:=False) 
If Not foundCell Is Nothing Then 
    If foundCell.Offset(0, 1).Value = Me.Reference.Value Then 
     foundCell.Offset(0, 8).Value = Me.Merchant.Value 
    Else 
     MsgBox "Name does not exist." 
    End If 
Else 
    MsgBox "ID does not exist." 
End If 

End Sub 
+1

니스하지만 ThisWorkbook.Sheets ("마스터 데이터")'와'내부의 전체 코드를 포장 할 필요는'설정 searchRange'에 없다, –

+2

@ShaiRado - 덕분에, 이제 끝을 이동 한 . ('rows.count' 앞에있는 점을 기억하십시오 - 기억하려고 노력 중입니다!) – SJR

+1

우리는 모두 VBA를 개선하기 위해 여기에 있습니다. 좋은 사람들이 많이 있습니다. –