2017-08-30 4 views
0

Ich habe ein Benutzerformular erstellt, das eine Referenznummer durchsucht und dann die Benutzerformularfelder mit Einträgen in der Zeile dieser Referenznummer in einem "Master-Blatt" füllt. Die Sache ist, dass die Referenz tatsächlich auf 3 Blättern mit den gleichen Informationen liegen kann und was ich tun möchte, ist, wenn ich die auf das Benutzerformular gezogenen Informationen aktualisiere, um alle 3 Blätter zu aktualisieren. Kannst du bitte helfen?Aktualisieren mehrerer Blätter mit einem Benutzerformular

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

Wenn ich die Frage richtig bin zu verstehen, wollen Sie den Code kopieren, die Sie zur Zeit für 'Worksheets („Masterdata“)' und es wieder tun tun für 'Worksheets („X“)', 'Worksheets ("A") 'und' Arbeitsblätter ("C") '. Ist das korrekt? – YowE3K

+0

Ja, vorausgesetzt, die Referenz befindet sich auf Blatt x oder a oder c ... Ich habe ein Benutzerformular für die Dateneingabe, das die Daten in 16 Differenzszenarien unterteilt und angibt, auf welche der 4 Blätter es gehen muss 2 der 4 manchmal seine 3 der 4. Es wird IMMER in die Stammdaten gehen – MBrann

Antwort

1

Anstatt jedes Blatt dimmen, was ist nur eine Sammlung für sie zu schaffen, ein generisches Arbeitsblatt-Objekt, und durch die Sammlung iterieren? siehe unten.

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 
Verwandte Themen