Excel VBA代码在一次删除/复制/粘贴多个单元格时执行
当您一次删除或编辑目标列中的多个单元格时,这些代码块似乎会执行。在大多数情况下,用户试图将允许的值粘贴到这些单元格中,一次只能粘贴多个单元格。这导致用户不得不处理毫无理由弹出的消息框。关于如何进行相同的错误检查,但在选择或更改多个单元格时不会弹出消息框,您有什么想法吗?此代码粘贴在microsoft excel对象(图纸代码)中Excel VBA代码在一次删除/复制/粘贴多个单元格时执行,vba,excel,Vba,Excel,当您一次删除或编辑目标列中的多个单元格时,这些代码块似乎会执行。在大多数情况下,用户试图将允许的值粘贴到这些单元格中,一次只能粘贴多个单元格。这导致用户不得不处理毫无理由弹出的消息框。关于如何进行相同的错误检查,但在选择或更改多个单元格时不会弹出消息框,您有什么想法吗?此代码粘贴在microsoft excel对象(图纸代码)中 Private子工作表\u更改(ByVal目标作为范围) 如果Target.Column=14,则“N列” 如果不是数字(Target.Value),则 MsgBox“
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Column=14,则“N列”
如果不是数字(Target.Value),则
MsgBox“请输入仅带数字的LBS ran”,请使用感叹号
出口接头
如果结束
如果Len(Target.Value)<4且Target.Value为0,则
MsgBox“请输入包含逗号的LBS ran”,VBE感叹号
出口接头
如果结束
如果结束
如果Target.Column=15,则“列O”
如果不是数字(Target.Value),则
MsgBox“请输入仅带数字的LBS ran”,请使用感叹号
出口接头
如果结束
如果Len(Target.Value)<4且Target.Value为0,则
MsgBox“请输入包含逗号的LBS ran”,VBE感叹号
出口接头
如果结束
如果结束
'如果列Q被标记,但不完整的文本将变为红色
如果Target.Column=18,则
如果Target.Value=“YES”或Target.Value=“YES”或Target.Value=“YES”,则“文本”标记为绿色
使用Target.Font
.Color=-16724992
.TintAndShade=0
以
其他的
使用Target.Font
.Color=vbRed
.TintAndShade=0
以
如果结束
如果结束
端接头
您可以随时检查选择了多少个目标,并将其用于If
语句中:
If target.Count = 1 Then msgbox("My Message!")
因为它是一个简单的单行If
语句,所以您可以在一行中完成所有操作,而不是
If target.Count = 1 Then
msgbox("My Message!")
End If
而且,请仔细查看代码,也许可以将整个第一部分用这样一个语句进行包装,因为您所做的只是发布一条消息:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then ' <-------- Checking how many cells were changed.
If Target.Column = 14 Then 'COLUMN N
If Not IsNumeric(Target.Value) Then
MsgBox "Please enter LBS ran with only numbers.", vbExclamation
Exit Sub
End If
If Len(Target.Value) < 4 And Target.Value <> 0 Then
MsgBox "Please enter LBS ran with comma included.", vbExclamation
Exit Sub
End If
End If
If Target.Column = 15 Then 'COLUMN O
If Not IsNumeric(Target.Value) Then
MsgBox "Please enter LBS ran with only numbers.", vbExclamation
Exit Sub
End If
If Len(Target.Value) < 4 And Target.Value <> 0 Then
MsgBox "Please enter LBS ran with comma included.", vbExclamation
Exit Sub
End If
End If
End If 'Target.Count = 1
'IF COLUMN Q IS MARKED, BUT NOT COMPLETE TEXT TURNS RED
' << Rest of your code here >>
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Count=1,那么“如果他们选择了多个单元格,您想跳过消息框吗?”?如果target.Count=1,则可以将每个文件包装在中,然后将msgbox(…)
?这样做了!太好了,非常感谢你!如果Target.Column=14或Target.Column=15,我也可以通过说来缩短代码,然后只使用下面对应的代码一次吗?@CoryGabba-啊,是的!抢手货我会保留这两个If
语句,但是如果Target.Column=1和(Target.Column=14或Target.Column=15)那么…
我想…但这有点复杂,所以我只保留如果Target.Count=1,那么//如果Target.Column=14或Target.Column=15,那么…
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then ' <-------- Checking how many cells were changed.
If Target.Column = 14 Then 'COLUMN N
If Not IsNumeric(Target.Value) Then
MsgBox "Please enter LBS ran with only numbers.", vbExclamation
Exit Sub
End If
If Len(Target.Value) < 4 And Target.Value <> 0 Then
MsgBox "Please enter LBS ran with comma included.", vbExclamation
Exit Sub
End If
End If
If Target.Column = 15 Then 'COLUMN O
If Not IsNumeric(Target.Value) Then
MsgBox "Please enter LBS ran with only numbers.", vbExclamation
Exit Sub
End If
If Len(Target.Value) < 4 And Target.Value <> 0 Then
MsgBox "Please enter LBS ran with comma included.", vbExclamation
Exit Sub
End If
End If
End If 'Target.Count = 1
'IF COLUMN Q IS MARKED, BUT NOT COMPLETE TEXT TURNS RED
' << Rest of your code here >>