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

时间:2017-08-30 08:12:35

标签: excel vba excel-vba userform

我创建了一个搜索参考编号的用户表单,然后在" Mastersheet"中填充了该参考编号行上的条目的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

1 个答案:

答案 0 :(得分: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