使用用户窗体更新多个工作表

我已经创build了一个用户表单,它search了一个引用号码,然后用“主表”中的引用号码的行填入用户表单字段。 事实上,参考可能实际上是在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 

而不是调暗每一张表,只是为他们创build一个集合,使用一个通用的工作表对象,并迭代集合? 见下文。

 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