2017-01-22 151 views
0

我在工作簿中有名爲Wk1,Wk2 Wk3等的工作表。需要使用VBA更改複製的Excel公式的名稱

所有在WK1片的公式由WK1例如= Wk1MonWeight

前綴複製從WK1片式的任何我使用的代碼的另一片材的後下方的前綴WK1改變的名稱它們被複制到例如複製= Wk1MonWeight到Wk2表格後公式變爲= Wk2MonWeight。此代碼有效。

Sub Step2ChangeWkNamesInFormulasOnNewWksheet() 

    Dim ws As Worksheet 
    Dim r As Range 

    For Each ws In Worksheets 
     If InStr(1, ws.Name, "Wk", 1) > 0 Then 
      For Each r In ws.Range("C116:I119") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 

      For Each r In ws.Range("C184:J188") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 

      For Each r In ws.Range("E341:AY341") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 


     End If 
    Next ws 

    MsgBox "Done" 
    End Sub 

我想改變片下面的代碼,以使從WK1到緊接在片材之前的片材的名稱前綴的變化被複制到+平均。 e.g當公式= Wk1MonWeight從WK1片與WK 4片複製變得= Wk3AvgWeight

For Each r In ws.Range("E341:AY341") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 

任何人都可以與此幫助。

謝謝

+0

請澄清:最初的配方總是包含''後和Wk1'你Mon'想用前面的表格名稱替換Wk1,將'Mon'替換爲Avg。這是否準確? –

+0

是初始公式總是包含星期一。是的,我想用前面的圖紙名稱替換Wk1。 Mon需要被刪除並替換爲Avg,以便新公式讀取爲= Wk3AvgWeight – frustrationmultiplied

回答

0

根據你的描述,這應該這樣做:

編輯

Sub Step2ChangeWkNamesInFormulasOnNewWksheet() 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 
    On Error GoTo ErrHandler 

    Dim ws As Worksheet, r As Range 
    For Each ws In Worksheets 
     If InStr(1, ws.Name, "Wk", 1) = 1 And InStr(1, ws.Name, "Wk1", 1) = 0 Then 
      For Each r In ws.Range("C116:I119, C184:J188") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 
      For Each r In ws.Range("E341:AY341") 
       r.Formula = Replace(r.Formula, "Wk1Mon", Sheets(r.Parent.Index - 1).Name & "Avg") 
      Next r 
     End If 
    Next 

    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
    MsgBox "Done" 
    Exit Sub 

ErrHandler: 
    MsgBox "Something Went wrong: " & vbCrLf & Err.Description 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
End Sub 
+0

對不起,它沒有工作。我在Wk2表格中運行它,並且只有Wk1表格中的公式發生了變化。我在Wk1表中稱爲食物清單,並且= Wk1MonWeight公式更改爲= Food ListAvgWeight * 12 – frustrationmultiplied

+0

好吧,我看到您正在所有表單上同時運行宏。我將編輯。 –

+0

更改是否也適用於工作表Wk1?更改 –