Excel工作表VBA代码适用于一个,但不适用于其他代码



我一直在研究一段VBA代码,这让我很痛苦。我正在尝试得到这个:

Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim numCell As Range
If Target.Count <> 1 Then Exit Sub
If Target.Value = "+" Then
    Set numCell = Target.Offset(0, -1)
    numCell.Select
    numCell.Value = numCell.Value + 1
ElseIf Target.Value = "-" Then
    Set numCell = Target.Offset(0, 1)
    numCell.Select
    numCell.Value = numCell.Value - 1
End If
    End Sub

以处理多个不同的 Excel 工作表。目前,在一张纸(原始(上,它可以完美运行。但是后来我将第一张纸的布局复制粘贴到下一张纸上,现在 + 和 - 在新纸上不再起作用。

即使将"Sub"设为私有,它仍然不会改变任何东西。

这是一个简单的加减代码,在每张纸上应该以相同的方式工作。

感谢您提供的任何建议!

如果将此代码复制到另一个工作表模块,它应该可以工作。打开一个空白工作簿,并将此代码添加到多个工作表的模块上,以查看该代码在新工作簿中是否有效。

但是,如果要为工作簿中的所有工作表实现此代码,

请将此代码放在特定的工作表模块上,请将其放在此工作簿模块上。

代码将如下所示...

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim numCell As Range
If Target.Count <> 1 Then Exit Sub
If Target.Value = "+" Then
    Set numCell = Target.Offset(0, -1)
    numCell.Select
    numCell.Value = numCell.Value + 1
ElseIf Target.Value = "-" Then
    Set numCell = Target.Offset(0, 1)
    numCell.Select
    numCell.Value = numCell.Value - 1
End If
End Sub

Worksheet_SelectionChange函数必须放置在您希望它工作的每个工作表对象中。我还担心您正在导致由选择更改触发的子中的选择更改 - 要求无限循环?!

在每张纸中都包含此子

Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub      
    addsubtract Target
End Sub

将此子包含在一个模块

要创建模块,请转到 VBA 编辑器中的插入>模块。

Sub addsubtract(Target as Range)
    Dim numCell As Range
    If Target.Value = "+" Then
        Set numCell = Target.Offset(0, -1)
        numCell.Value = numCell.Value + 1
    ElseIf Target.Value = "-" Then
        Set numCell = Target.Offset(0, 1)
        numCell.Value = numCell.Value - 1
    End If      
End Sub

相关内容

最新更新