2017-04-13 12 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(「マスターデータ」) 'と'内部コード全体をラップする必要が唯一の 'を設定探索範囲'にありません、 –

+2

@ShaiRado - おかげで、私は今、終わりを移動しました。 ( 'rows.count'の前にあるドットに注意してください - 私は覚えようとしています!) – SJR

+1

私たちはすべてここに迷ってVBAを改善しています。 –

関連する問題