Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA代码在一次删除/复制/粘贴多个单元格时执行_Vba_Excel - Fatal编程技术网

Excel VBA代码在一次删除/复制/粘贴多个单元格时执行

Excel VBA代码在一次删除/复制/粘贴多个单元格时执行,vba,excel,Vba,Excel,当您一次删除或编辑目标列中的多个单元格时,这些代码块似乎会执行。在大多数情况下,用户试图将允许的值粘贴到这些单元格中,一次只能粘贴多个单元格。这导致用户不得不处理毫无理由弹出的消息框。关于如何进行相同的错误检查,但在选择或更改多个单元格时不会弹出消息框,您有什么想法吗?此代码粘贴在microsoft excel对象(图纸代码)中 Private子工作表\u更改(ByVal目标作为范围) 如果Target.Column=14,则“N列” 如果不是数字(Target.Value),则 MsgBox“

当您一次删除或编辑目标列中的多个单元格时,这些代码块似乎会执行。在大多数情况下,用户试图将允许的值粘贴到这些单元格中,一次只能粘贴多个单元格。这导致用户不得不处理毫无理由弹出的消息框。关于如何进行相同的错误检查,但在选择或更改多个单元格时不会弹出消息框,您有什么想法吗?此代码粘贴在microsoft excel对象(图纸代码)中

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 >>