2017-09-14 63 views
1

背景:Worksheet_SelectionChange不執行所需的任務

我似乎不知道我有SelectionChange做的和想一些幫助,以確保我正確地使用它。

我右鍵單擊當前工作簿,在VBA窗口,選擇查看代碼。我在那個領域有我的代碼。在即時窗口(CTRL + G),我輸入:

Application.EnableEvents=True 

代碼:

我使用測試的代碼應該在顯示目標行/列一個細胞(1,1):

Option Explicit 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim r, c As Integer 
    If Selection.Count = 1 Then 
     c = Target.Column 
     r = Target.Row 
     Cells(1, 1).Value = "Cells(" & r & ", " & c & ")" 
    End If 
End Sub 

問題:

我是否缺少啓用選擇更改事件的內容?

+1

在ThisWorkbook中,正確的名稱是'Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object,ByVal Target As Range)'。您可以從VBE頂部的下拉列表中找到所有名稱。如果您希望將其應用於單張紙,請將其添加到工作表模塊。 – SJR

+0

@SJR在糾正名稱和一些玩弄後,這似乎是類似於調整變化事件,其中活動單元(選擇)的改變不是觸發器,但是進入單元格以編輯字符串是觸發器。你用正確的名字回答了我發佈的問題。將期待單獨發佈我的關於功能的其他問題。謝謝! – Cyril

+0

它應該由被選中的單元觸發,而不必編輯它。它與正常的圖紙級選擇更改事件應該沒有區別,唯一的區別是您可以指定應用的工作表。 – SJR

回答

3

如果你右擊的ThisWorkbook並選擇查看代碼你會看到兩個下拉菜單的代碼窗口上方。最左邊的允許您選擇(一般)或工作簿。如果選擇「工作簿」,則最右側的下拉菜單將提供可以在工作簿級別使用的所有事件。 Worksheet_SelectionChange不存在,因爲它不是Workbook級別的事件。

工作簿級事件包括像打開關閉SheetChange事件。注意:SheetChange在用戶更改所選工作表時觸發,而不會更改給定工作表。

如果你這樣做相同,但與工作表Sheet1 (Sheet1中)對象,最左邊的下拉菜單會顯示(一般)和工作表。選擇此項將提供工作表級別的可用事件。選擇SelectionChange並且VBE會自動創建事件的外殼,隨時爲您填充代碼。

請注意,如果您在添加了代碼的工作表上更改了某個單元格,則該事件僅會觸發,因此請在創建事件時記住這一點。

+1

這個。 **絕不**手動輸入事件處理程序簽名或粘貼它們。除非您完全知道**您正在做什麼,並且您知道並記住事件的確切名稱和事件提供程序接口,如以及簽名中每個參數的數量,類型和順序(注意,名稱無關緊要)。處理程序總是被命名爲'Interface_EventName',接口實現也是''Interface_MemberName''。順便說一句,這就是爲什麼你不應該在你的方法名稱中有下劃線。 –

+0

感謝有關每個級別事件包含的解釋。這是我點擊並解決了我遇到的所有問題。 @SJR讓我走上了正軌,儘管你提供了更多的解釋。 – Cyril

1

不要右擊ThisWorkbook,而是右鍵點擊Sheet1