仅当我的范围的一个单元格的修改与0或空单元格(事件)不同时才执行宏

问题描述 投票:0回答:1

我在一个名为“auto assegnate”的特定表中有一个宏

我想要做的是执行一个名为macroArvalItaly的特定宏。当用户在工作表“auto assegnate”中修改范围E5到E13中的单元格时,它运行良好。但是我希望我的宏macroArvalItaly仅在用户修改此范围内的单元格时修改不同于值0或将单元格保留为空(空白)时才会执行。

我的意思是如果修改此范围(E5到E13)的一个单元格等于0或空单元格:不执行宏

如果修改此范围的一个单元格(E5到E13)与0或空单元格不同:执行我的宏

并且在它的顶部(它是可选的,但它会很棒),如果修改此范围的一个单元格(E5到E13)与图形或空单元格不同(该图形可以是十进制的,例如0,333):不执行宏并向用户发送错误消息(“单元格E5到E13的条目应该只是数字”)

提前谢谢了。哈维

请在下面找到我的代码:

Sub Worksheet_Change(ByVal Target As Range)

With Worksheets("Auto assegnate")
If Not Intersect(Target, Range("E5:E13")) Is Nothing Then

Call ThisWorkbook.macroArvalItaly1
End If
End With
End Sub
excel vba events
1个回答
0
投票

您只需要添加一个检查值的if语句:

Sub Worksheet_Change(ByVal Target As Range)
   With Worksheets("Auto assegnate")
       If Not Intersect(Target, Range("E5:E13")) Is Nothing AND target.Value <> "" AND target.Value <> 0 Then
         Call ThisWorkbook.macroArvalItaly1
       End If
    End With
End Sub

对于你的第二部分,如果你想检查它是否等于另一个单元格,只需使用

if ISNUMERIC(target.value) Then
    Call ThisWorkbook.macroArvalItaly1
Else
   msgbox "You cannot use this value"
End if
© www.soinside.com 2019 - 2024. All rights reserved.