Vba 使用userform更新多个工作表

Vba 使用userform更新多个工作表,vba,excel,userform,Vba,Excel,Userform,我创建了一个userform,它搜索一个参考号,然后在“母版”中的该参考号的行上用条目填充userform字段。事实上,引用可能在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 Work

我创建了一个userform,它搜索一个参考号,然后在“母版”中的该参考号的行上用条目填充userform字段。事实上,引用可能在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

与其暗显每个工作表,不如只为它们创建一个集合,使用通用工作表对象并遍历集合?见下文

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

如果我正确理解了问题,您希望复制当前为
工作表(“主数据”)
执行的代码,然后为
工作表(“X”)
工作表(“A”)
工作表(“C”)
再次执行该操作。是吗?是的,假设参考在活页x或a或c上。。。我有一个数据输入用户表单,它将把数据限定为16种不同的场景,并告诉它需要进入4张表单中的哪一张。有时是四分之二,有时是四分之三。它将始终放在主数据中