2017-08-30 4 views
0

私は参照番号を検索したユーザーフォームを作成し、ユーザーフォームのフィールドに「マスターシート」内のその参照番号の行にあるエントリを入力しました。事実は、同じ情報を持つ3枚のシート上に実際にリファレンスがあり、私がしたいことは、すべての3枚のシートを更新するためにユーザーフォームにプルされた情報を更新するときです。助けてもらえますか?複数のシートをユーザーフォームで更新する

Private Sub Update_Click() 

Dim searchRange As Range 
Dim foundCell As Range 
Dim mysearch As String 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim ws3 As Worksheet 
Dim ws4 As Worksheet 

Set ws1 = Worksheets("MasterData") 
Set ws2 = Worksheets("X") 
Set ws3 = Worksheets("A") 
Set ws4 = Worksheets("C") 

mysearch = Me.Search.Value 

    With ThisWorkbook.Sheets("MasterData") 
     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 
      foundCell.Offset(0, 11).Value = Me.RD.Value 
      foundCell.Offset(0, 17).Value = Me.DD.Value 
      foundCell.Offset(0, 12).Value = Me.PD.Value 
      foundCell.Offset(0, 13).Value = Me.NP.Value 
      foundCell.Offset(0, 14).Value = Me.Brd.Value 
      foundCell.Offset(0, 15).Value = Me.Com.Value 
      foundCell.Offset(0, 25).Value = Me.Dt.Value 
      foundCell.Offset(0, 20).Value = Me.PrGp.Value 
      foundCell.Offset(0, 21).Value = Me.Iss.Value 
      foundCell.Offset(0, 7).Value = Me.CVal.Value 
      foundCell.Offset(0, 22).Value = Me.Un.Value 
      foundCell.Offset(0, 23).Value = Me.Wt.Value 
      foundCell.Offset(0, 24).Value = Me.Invd.Value 
      foundCell.Offset(0, 26).Value = Me.Sh.Value 
      foundCell.Offset(0, 19).Value = Me.FS.Value 
      foundCell.Offset(0, 18).Value = Me.LN.Value 
      foundCell.Offset(0, 16).Value = Me.Add.Value 

    Else 

     MsgBox "ID does not exist." 

    End If 

End Sub 
+0

は、あなたが現在 'ワークシート(「MasterData」)'のためにやっているコードをコピーしたいとワークシート(「X」) '、'ワークシート 'のために再びそれを行います(「A」)と「ワークシート(「C」)」を含む。あれは正しいですか? – YowE3K

+0

はい、参照がシートxまたはaまたはcにあると仮定します。私は16個の異なるシナリオにデータを適格にするデータ入力userformを持っています。 4のうち2つが4のうち3つになることがあります。常にマスターデータに入ります – MBrann

答えて

1

一般的なワークシートオブジェクトを使用してコレクションを繰り返し作成するのはどうですか?下記参照。私が正しく質問を理解していた場合

Private Sub Update_Click() 

Dim searchRange As Range 
Dim foundCell As Range 
Dim mysearch As String 
Dim ws As Worksheet 
Dim sheetCollection As Collection 
Set sheetCollection = New Collection 
With sheetCollection 
    .Add Worksheets("MasterData"), Worksheets("MasterData").Name 
    .Add Worksheets("X"), Worksheets("X").Name 
    .Add Worksheets("A"), Worksheets("A").Name 
    .Add Worksheets("C"), Worksheets("C").Name 
End With 

mysearch = Me.Search.Value 

For Each ws In sheetCollection 
    With ws 
     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 
      foundCell.Offset(0, 11).Value = Me.RD.Value 
      foundCell.Offset(0, 17).Value = Me.DD.Value 
      foundCell.Offset(0, 12).Value = Me.PD.Value 
      foundCell.Offset(0, 13).Value = Me.NP.Value 
      foundCell.Offset(0, 14).Value = Me.Brd.Value 
      foundCell.Offset(0, 15).Value = Me.Com.Value 
      foundCell.Offset(0, 25).Value = Me.Dt.Value 
      foundCell.Offset(0, 20).Value = Me.PrGp.Value 
      foundCell.Offset(0, 21).Value = Me.Iss.Value 
      foundCell.Offset(0, 7).Value = Me.CVal.Value 
      foundCell.Offset(0, 22).Value = Me.Un.Value 
      foundCell.Offset(0, 23).Value = Me.Wt.Value 
      foundCell.Offset(0, 24).Value = Me.Invd.Value 
      foundCell.Offset(0, 26).Value = Me.Sh.Value 
      foundCell.Offset(0, 19).Value = Me.FS.Value 
      foundCell.Offset(0, 18).Value = Me.Ln.Value 
      foundCell.Offset(0, 16).Value = Me.Add.Value 
    Else 
     MsgBox "ID(" & mysearch & ") does not exist in " & ws.name 
    End If 
Next ws 
End Sub 
関連する問題