excel - VBA:代码在原始工作表模块中工作,但不是新模块
问题描述
我有一些代码是在我正在使用的工具中开发的,它根据另一个单元格的变化执行一些基本计算,以添加日期等。它在为其创建的工作表中运行良好,但是,当我将其复制到另一个工作表模块以执行类似任务(添加了两个额外的列)时,它似乎不起作用。我已经更改了对两个额外列的引用,并且我没有收到任何错误消息,它只是没有进行应有的计算。我是 VBA 新手,但似乎无法弄清楚。在此先感谢您的帮助!
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo SelectError:
Oval = Target.Value
SelectError:
End Sub
Private Sub Worksheet_Change2(ByVal Target As Range)
If Not Intersect(Target, Range("G11:G202")) Is Nothing Then
On Error GoTo Eerror:
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="Password"
'Dim TarAddress As String
Range(Target.Address).Select ''''DO NOT DELETE, PREVENTS LOOP
If Range(Target.Address).Value <> 0 Then
Range(Target.Address).Offset(0, 1).Value = Date
'Update Budget
If Range(Target.Address).Offset(0, 5).Value = 0 Then
Range(Target.Address).Offset(0, 5).Value = Range(Target.Address).Value
End If
If Range(Target.Address).Value <> 0 Then
Range(Target.Address).Offset(0, 6).Value = Range(Target.Address).Value
End If
'Set Task Status to Not Started in Cancelled
If Range(Target.Address).Offset(0, 2).Value = "Cancelled" Then
Range(Target.Address).Offset(0, 2).Value = "Not Started"
End If
End If
Eerror:
ActiveWorkbook.Protect Password:="Password"
End If
If Not Intersect(Target, Range("I11:I202")) Is Nothing Then
On Error GoTo GError:
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="Password"
'Dim TarAddress As String
Range(Target.Address).Select ''''DO NOT DELETE, PREVENTS LOOP
'Mark Complete Date
If Range(Target.Address).Value = "Complete" Or Range(Target.Address).Value = "Complete w/ Issues" Then
Range(Target.Address).Offset(0, 2).Value = Date
Range(Target.Address).Offset(0, -2).Value = 0
End If
'Mark Start Date w/ Complete Date if Blank
If (Range(Target.Address).Value = "Complete" Or Range(Target.Address).Value = "Complete w/ Issues") And Range(Target.Address).Offset(0, 1).Value = "" Then
Range(Target.Address).Offset(0, 1).Value = Date
End If
'Mark Start Date
If Range(Target.Address).Value = "In Progress" And Range(Target.Address).Offset(0, 1).Value = "" Then
Range(Target.Address).Offset(0, 1).Value = Date
End If
'Mark Cancel Date
If Range(Target.Address).Value = "Cancelled" And Range(Target.Address).Offset(0, 8).Value = 1 Then
Range(Target.Address).Offset(0, 13).Value = Date
End If
GError:
ActiveWorkbook.Protect Password:="Password"
End If
End Sub
ETA:我不知道是不是因为它在工作表和模块中,但它不会让我逐步通过代码来尝试跟踪它。我期望的一个例子是,如果我在 G 列的单元格中输入大于 0 的值,它将用今天的日期更新下一个单元格,将该值复制并粘贴到单元格 5 和 6 列中,以及其他一些事情。当我输入一个值时,它不会进行任何更改,也不会给出错误消息。工作表保持不变。
解决方案
推荐阅读
- scala - 实施 Supervision.Resume 时的 Akka Stream 测试流程
- debian - 查找 debian jessie 的旧分支
- node.js - Socket.io 优化:socket.io 是否发送 JSON 字符串?我们如何优化它?
- html - 占宽度 100% 的复选框
- java - gcj 错误 - 找不到类 java.util.function.Predicate 的文件
- vue.js - 如果孩子在vue中有课程,如何设置父母的样式?
- vba - 使用标准复制和粘贴值 vba
- html - 变暗的图像问题css
- vue.js - Vue.js 从问题中导入
- android - 如何从android studio中的txt文件中检索字符串?