【问题标题】:If statement not executing properly in ByVal Target As Range如果语句在 ByVal Target As Range 中未正确执行
【发布时间】:2019-04-04 13:48:08
【问题描述】:

此代码根据 Worksheet_Change(ByVal Target As Range) 中提供的条件检查单元格范围。除了这个异常之外,它在大多数情况下都有效。当范围 SalesPrice 更改时,它会检查贷款金额值,“如果我的贷款金额低于 271,050 并且 checkbox1.value 为真”,它将进入下一个例程(这是正确的行为)。但是,如果我将重新计算 LoanAmount 的 SalesPrice 更改为导致 LoanAmount 超过 271050 的数字,则 MsgBox 代码不会执行。但是,如果我再次重新键入相同的 SalesPrice,它会执行。因此,为了使其正常工作,如果最初检查 chkbox1.value 以检测 LoanAmount 太高的代码,我必须输入两次 SalesPrice。

If Target.Address = "$D$5" Then 'Sales Price
If Range("LoanProgram").Value Like "*HFA Bond Miami*" And _
Range("SalesPrice").Value > 317646 Then MsgBox "Miami-Dade Bond Max Sales 
Price is $317,646"
If Range("LoanAmount").Value > 271050 And Sheets("Main").CheckBox1.Value = 
True Then
MsgBox "MDEAT Max Loan Amount is $271,050"
Sheets("Main").CheckBox1.Value = False
End If

【问题讨论】:

  • worksheet_change 事件只有在你手动更改 D5 时才会启动,如果你手动更改工作表上的任何位置,代码将检查是否为 D5,如果不是,则退出子.计算不是 worksheet_change 事件。
  • 您能否正确缩进您的代码并确保换行符正确?目前尚不清楚您的 If 语句是否是单行语句。原样的代码不会编译。最好是在这里复制/粘贴代码并使用 Ctrl + K 将其格式化为代码块。
  • D5 正在手动输入。

标签: excel vba if-statement


【解决方案1】:

进口:

Application.EnableEvents = False
    If Target.Address = "$D$5"
    End If
Application.EnableEvents = True

保存文件关闭它并重新打开它以重置 Application.EnableEvents。

【讨论】:

  • 没用,我将“Application.EnableEvents = False”放在“If Target.Address =”$D$5“Then”行之后,并在“Application.EnableEvents = True”之后放置“如果结束”
  • 可以启用Events和Application.EnableEvents = True分配给一个按钮,也可以在vba编辑器的“即时窗口”中输入,对测试代码有很大帮助。
  • If 后面有引号
  • 只是一个注释,但您的 If 没有 Then ;)
猜你喜欢
  • 1970-01-01
  • 2012-12-25
  • 2012-06-13
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2021-09-25
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多