我的工作表上运行了代码。此代码包含两个子例程。但我想在我的所有表格中运行此代码,我想知道什么是最好的方法。
正在运行的总代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Set Rng = Range(Cells(3, 6), Cells(500, 7))
Dim Intersection
Set Intersection = Application.Intersect(Target, Rng)
If Target.Cells.Count = 1 Then
If Not Intersect(Target, [B2]) Is Nothing Then _
Range("E:E").Find(vbNullString, [E3], , , , xlNext).Select
End If
If Not Intersection Is Nothing Then
If IsNumeric(Selection.Value) And Selection.Value <> "" Then
If (GetAsyncKeyState(vbKeyRButton)) Then 'right mouse button
Selection.Value = (Selection.Value + 1)
Cells(Selection.Row, 1).Select
End If
End If
End If
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Rng As Range
Set Rng = Range(Cells(3, 6), Cells(500, 7))
Dim Intersection
Set Intersection = Application.Intersect(Target, Rng)
If Not Intersection Is Nothing Then
Cancel = True
End If
End Sub
如果有人能给我提示,我们将不胜感激!
答案 0 :(得分:1)
将您的代码放入模块中。您可以点击以下链接。
答案 1 :(得分:1)
将代码放在其他位置会更复杂。如果您将代码放在一个模块中(这是正确的移动),您将需要告诉它也可以在其他工作表上运行。您可以编写代码以应用于Worksheet对象代码模块中任何打开或关闭的工作簿中的任何工作表。这都是关于如何写的。
您是否在代码中使用Me
或ActiveSheet
等作品?这是红旗,无论你放在哪里,结果都可能不是你想要的。
答案 2 :(得分:0)
如果希望更改事件对工作簿中的所有工作表有效,请将代码放在ThisWorkbook模块中并使用Workbook_SheetChange事件。在任何工作表中更改任何单元格时,将触发此事件。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub