如何使整个工作簿范围内的Worksheet_SelectionChange?
我想用VBA来获取活动单元格的值。 通过在线search,我find了下面的代码。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Sheets("sheet1").Range("Selection").Value = Cells(ActiveCell.Row, ActiveCell.Column).Value End Sub
但是,我必须将这些代码放在“sheet1”表单中。 如果我有三个工作表, sheet1, sheet2, and sheet3
,我需要复制上面的代码,并分别粘贴在这三个工作表,稍作修改。
有没有什么办法,我不需要把代码放在单独的工作表(也许在ThisWorkbook下),而我仍然可以得到活动单元的值,不pipe哪个表被激活。
谢谢
您想要的是@ScottCraner在评论中所说的内容 :在ThisWorkbook
中使用Workbook
types的SheetSelectionChange
事件。
VBE在代码窗格编辑器中提供了下拉菜单,特别是为此。 您不能将事件处理程序从Worksheet
对象复制/粘贴到Workbook
对象中,并期望事情“正常工作” – 使用下拉列表并让VBE为您生成处理程序存根!
从下拉列表中selectSheetSelectionChange
将生成这个处理程序:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) End Sub
正如你所看到的签名是不同的:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub
事件处理程序必须遵守事件的签名 (而不仅仅是名称),否则会遇到错误:
@ ScottCraner如果我使用Workbook_SheetSelectionChange并把它放在ThisWorkbook下,我得到编译错误: 过程声明不匹配具有相同名称的事件或过程的描述。