我想使用VBA来获取活动单元格的值。通过在线搜索,我发现了以下代码。
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下),而无论激活哪一个工作表,我仍然可以获取activecell的值。
谢谢
您想要的是@ScottCraner在评论中所说的:使用SheetSelectionChange
中的Workbook
类型的事件ThisWorkbook
。
VBE在代码窗格编辑器中提供了专门用于此目的的下拉菜单。您不能只是将事件处理程序从一个Worksheet
对象复制/粘贴到一个Workbook
对象中,并期望事情能够“正常工作”-使用下拉菜单并让VBE为您生成处理程序存根!
SheetSelectionChange
从下拉列表中进行选择将生成以下处理程序:
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下,则会出现编译错误:过程声明与具有相同名称的事件或过程的描述不匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句