使用用户表单更新多个工作表

Updating multiple sheets with a userform

我创建了一个用户表单,它搜索一个参考编号,然后在 "Mastersheet" 中用该参考编号所在行的条目填充用户表单字段。问题是参考实际上可能在 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

与其调暗每个 sheet,不如为它们创建一个集合,使用一个通用的 worksheet 对象,然后遍历该集合呢?见下文。

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