2017-06-29 59 views
1

我試圖創建一個宏,該宏本質上將從一個單元格中取出一列數據,並在每個月將其替換爲下一個單元格來自不同的工作表。我已附加使用查找&我錄製的宏替換我現在做的事情。創建一個宏,將列數據替換爲不同工作表的每個月的下一列

Sub Update() 
    Update Macro 

    Range("I6:I38").Select 
    Selection.Replace What:="$AC:$AC", Replacement:="$AD:$AD", LookAt:=xlPart _ 
     , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
End Sub 

的範圍是位於不同的工作比$AC:$AC$AD:$AD

請讓我知道如果我需要澄清什麼。

非常感謝你提前。

+0

我沒有得到你想要做的。您是否想每個月更換一次單元格,這意味着該工作簿每個月都會使用新的工作表進行調整。或者你有不同的工作表,爲不同的月份,你想循環通過他們?請告訴我們更多關於您的工作手冊,功能應該是什麼等。 –

+0

該工作簿具有一個工作表,每個月都會更新一次,更新將反映在摘要選項卡上。我想要摘要選項卡自動從更新的工作表中拉出。現在,我正在使用查找和替換手動執行此操作。 – Tyler

回答

0

奧克,現在我明白了:

您需要使用Workbook_SheetChange事件。如果您不知道事件如何運作,請詢問Google。可以使用VBA編輯器(alt + F11)訪問Workbook_SheetChange事件。然後,您單擊您的工作簿,就好像它是一個模塊。然後,將此代碼的ALL複製到工作簿中,保存它,關閉它,重新打開它並調整範圍以及工作表名稱。

然後它應該工作正常。

Option Explicit 
Public Enabled As Boolean 


Private Sub Workbook_Open() 
Enabled = True 
End Sub 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

If Enabled Then 
Enabled = False 
Dim summary As Worksheet, Jan As Worksheet, Feb As Worksheet, Mar As Worksheet 
Set summary = Worksheets("Summary") 
Set Jan = Worksheets("Jan") 
Set Feb = Worksheets("Feb") 
Set Mar = Worksheets("Mar") 

summary.Range("B5").Value = Jan.Range("A1").Value 
summary.Range("B6").Value = Feb.Range("A1").Value 
summary.Range("B7").Value = Mar.Range("A1").Value 
Enabled = True 
End If 

End Sub 

有一個全局變量啓用其切換的事件Sheetchange。這是必需的,因爲Sheetchange函數會更改觸發該函數的工作表並導致無限循環。所以用這個布爾值,你會關掉它。 workbook_open事件會將布爾值設置爲true,因此您將從啓用狀態開始並將其暫時關閉並再次打開。

像這樣,每當您的工作簿被更改時,您的摘要將自動更新。

祝你好運!

+0

謝謝你的幫助。我不確定這正是我想要的,對於含糊不清的情況感到抱歉。我有一張工作表,允許我爲每個月輸入值(收入,費用,利潤)。之後,它需要一個sumif函數,並將它們放到摘要選項卡中作爲Year至今的表示。我希望能夠更新工作表選項卡中的列,然後將新的更新的sumif函數發送到摘要選項卡。現在我正在使用「查找和替換」手動執行此操作。 – Tyler

+0

對不起,我對宏也是新手,所以我在這方面並不擅長。 – Tyler

+0

沒問題,這就是網站的用途。只要確保你詳細定義了問題,其他人就可以重現你的問題。 –

相關問題