2014-03-28 66 views
0

如果某個區域中的任何單元格發生更改(C5至c25),我試圖使宏自動運行。如您在下面的代碼中看到的,它應該自動彈出一個消息框,詢問用戶是否繼續(如果用戶說是,則運行宏)。在用戶正在更改的單元格上運行宏

雖然我更改了任何一個單元格(從c5到c25),但我無法讓代碼開始運行。

這裏是代碼 - 這是不是都是我自己的:

Private Sub Worksheet_Change(ByVal Target As Range) 
If Not Intersect(Target, Target.Worksheet.Range("C5:C25")) Is Nothing Then Reminder 
End Sub 
Sub Reminder() 
' 
' Reminder Macro 
' 
response = MsgBox("Do you want to set a reminder in Outlook for when the next update is required? If yes, make sure your Microsoft Outlook is open.", vbYesNo) 

If response = vbNo Then 
    MsgBox ("You selected 'No'") 
    Exit Sub 
End If 
'Rest of my macro code goes here... 

End sub 

謝謝!

+0

此代碼是否放置在工作表模塊中?或者一個普通的代碼模塊?爲了調用'Change'事件處理程序,它需要在Worksheet模塊中。 –

+0

我認爲一個工作表模塊..它左邊有:VBAProject(文件名) - >然後Microsoft Excel對象,然後模塊。這在Module3中 – Boswell

+1

Module3是一個普通的代碼模塊。請參閱下面的答案。如果有任何關於如何實施它的問題,請告訴我。你的代碼有效,它只是在錯誤的地方:) –

回答

1

確保您的代碼位於Worksheet的代碼模塊中。從上面的註釋中,您可以指出它在模塊3中。它需要移動到工作表的代碼模塊中。

enter image description here

0

嘗試:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Range("C5:C25"), Target) Is Nothing Then 
     Call reminder 
    End If 
End Sub 
+0

謝謝,但這仍然不起作用:/ – Boswell

0

你的代碼工作正常,確保你把它放在工作表對象。此外,我相信只有在保存爲xlsm,關閉並重新打開之前,代碼纔會處於活動狀態。

+1

這是一個評論註釋一個答案 - 和大衛澤森在發佈之前提出了同樣的觀點(作爲評論) – brettdj

相關問題