vba - 尽管条件不满足,Worksheet_change 事件仍会触发
问题描述
我有标记 D 列单元格更改时间的功能。现在我想向 worksheet_change 事件添加另一个函数,如果在 D 列单元格中写入特定文本,它将相应地更改 E 列。
我遇到的问题是,尽管条件不满足(其他文本写入 D 列单元格),但 E 列每次都会更改。有人可以指出我正确的方向吗,我对 VBA 很陌生,所以也许我错过了一些东西。
我的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCellColumn As Integer
Dim xTimeColumn As Integer
Dim xPaymentColumn As Integer
Dim xRow, xCol As Integer
xCellColumn = 4
xTimeColumn = 23
xPaymentColumn = 5
'part for marking date, works as intended
On Error Resume Next
xRow = Target.Row
xCol = Target.Column
If Target.Text <> "" Then
If xCol = xCellColumn Then
Cells(xRow, xTimeColumn) = Now()
End If
End If
'part for changing column E according column D selection
'I would like this part to trigger only if text cell in column D changed _
to "Send request" or "Start evaluation", if any other text is written in column D, _
column E should remain intact
If Target.Text = "Send request" Or "Start evaluation" Then
If xCol = xCellColumn Then
Cells(xRow, xPaymentColumn) = "Yes"
End If
End If
End Sub
解决方案
改变你If
的
If Target.Text = "Send request" Or Target.Text = "Start evaluation" Then
您当前的 if-Condition 抛出一个错误Type mismatch
,但是您正在使用On Error Resume Next
- 消息吃掉所有错误。因此 VBA 会按照您的要求执行:忽略运行时错误并愉快地执行下一条语句 - 这是 If 块中的语句。
一般建议:切勿使用On Error Resume Next
推荐阅读
- python - 矢量化函数的numpy广播
- python-3.x - Keras Conv 3d 错误层 conv3d 与层不兼容
- python-3.x - 由字符而不是换行符分隔的无限 CSV 文件
- r - 绕过 RStudion 登录屏幕
- r - dplyr::mutate 基于第二个(过滤的)数据帧的新列
- java - Java BigDecimal 除法和乘法四舍五入到小数点后两位
- php - 用 FPDF 换行
- python - 如何告诉 Python 在源文件中间停止解析?
- svelte-3 - Sapperjs 应用程序用户登录菜单而不是站点范围的菜单
- python - 具有非数值的数据透视表占总列数的百分比