2017-08-30 27 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個不同的情景,並告訴它需要進入哪個表單。 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