loops - If-Then 语句在 Sub 和 Calling Procedure 之间循环
问题描述
各位,我需要一些帮助...
我有一个子程序,用于检测工作表 G 列中的数据验证,并根据 C 列中的值(STD 或 OPT)触发 msgbox。这部分工作正常,但是当将 C 列从“OPT”切换回“STD”时,我试图获取一个值(PAINT,WHT)以返回(如果这发生变化)到 G 列。逻辑似乎并不复杂,但是当我放置一个 IF...Then 语句时,它不断地想要返回到调用过程,并为我的规格表中的每一行重复该过程。本质上,当我运行主过程时,它会调用并运行 Sub,但是在操作(在 IF 语句内)完成和整个主过程完成之前,我必须按 Enter 大约 45 次。有人可以查看我的代码以了解为什么会这样吗?我'
这是我的 Sub 中的代码:
Sub VerifyDVG()
Dim aCl As Range
Dim ws As Worksheet
Dim dvG As Range
Dim Cv As String
Dim msgS As String
Dim msgO As String
Dim Title As String
Dim Ntfy As String
Set aCl = ActiveCell
Set ws = Sheets("53SCT-FRCOHAR")
msgS = "Please verify the correct Specification, by selecting it from the Finish Options List."
msgO = "Please choose a Specification from the Finish Options List."
Title = "Verify Specifications"
ws.Unprotect ("******")
On Error GoTo noval
Set dvG = Range("G:G").Cells.SpecialCells(xlCellTypeAllValidation)
Cv = aCl.Value
If Intersect(dvG, aCl.Offset(0, 4)) Is Nothing Then GoTo noval
If Cv = "STD" And aCl.Row = 53 Then
Ntfy = MsgBox(msgS, vbExclamation + vbOKOnly, Title)
aCl.Offset(0, 4).Value = "PAINT, WHT"
ElseIf Cv = "STD" And aCl.Row <> 53 Then
Ntfy = MsgBox(msgS, vbExclamation + vbOKOnly, Title)
aCl.Offset(0, 4).Value = "UC"
Else
Ntfy = MsgBox(msgO, vbExclamation + vbOKOnly, Title)
End If
ws.Protect ("******")
Exit Sub
noval:
ws.Protect ("******")
MsgBox (Null)
On Error GoTo 0
End Sub
当它到达这一行时:
aCl.Offset(0, 4).Value = "PAINT, WHT"
或者
aCl.Offset(0, 4).Value = "UC"
...它成功更改了 G 列的值,但立即返回调用过程并继续循环,直到到达我的文档末尾。
注意,调用过程确实有一个参数集:
Private Sub Worksheet_Change(ByVal Target As Range)
这和它有什么关系吗?或者我如何将其他电话堆叠在其中?或者,也许,使用“ActiveCell”会导致循环发生,不知何故?
我基本上只希望子在用户浏览文档时每行运行一次。
提前感谢您的帮助!
解决方案
推荐阅读
- visual-studio-2019 - VS 2019:本地网络服务器上安装的 TFS 2019 上没有可用的存储库
- rust - 如何仅将自定义序列化用于“字符串”序列化?
- typescript - 异步在 Cloud Function + TypeScript 中不起作用
- sql - 具有多个连接导致重复的 SQL
- amazon-web-services - 使用无服务器创建 S3 存储桶时出现错误“存储桶名称不应包含大写字符”
- unity3d - 如何在 Hololens 上渲染跟踪的图像?
- android - 不会 notifyDataSetChanged() 在 Android Studio 的 RecyclerView.ViewHolder 中启动 init{ }?
- python - 在 pandas 中,根据表 B 中的条件获取表 A 中行索引的有效方法
- r - 如何减少ggplot2中的图例框宽度
- java - NetBeans 无法识别 JDK