我一直在研究一段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