Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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,如果范围内的活动单元格不等于字符串调用宏_Excel_Vba - Fatal编程技术网

Excel VBA,如果范围内的活动单元格不等于字符串调用宏

Excel VBA,如果范围内的活动单元格不等于字符串调用宏,excel,vba,Excel,Vba,我对VBA的世界很陌生。我正试图添加到现有的私有子系统(更改)。当范围内的活动单元格(“K2:K700”)不等于单词“Down”时,我试图“激发”宏“DelRCE” 以下代码不起作用: Dim txt As String Dim rng As Range Dim vec As String txt = ActiveCell.Value rng = ("K2:K700") vec = "Down" If r_ng.txt <> vec Then Call Macro End

我对VBA的世界很陌生。我正试图添加到现有的私有子系统(更改)。当范围内的活动单元格(“K2:K700”)不等于单词“Down”时,我试图“激发”宏“DelRCE”

以下代码不起作用:

Dim txt As String
Dim rng As Range
Dim vec As String

txt = ActiveCell.Value
rng = ("K2:K700")
vec = "Down"

If r_ng.txt <> vec Then
    Call Macro
End If
Dim txt作为字符串
变暗rng As范围
作为字符串的Dim vec
txt=ActiveCell.Value
rng=(“K2:K700”)
vec=“向下”
如果r_ng.txt vec那么
调用宏
如果结束

我想您正在寻找这样的产品:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim key As String
    Dim rng As Range

    'Set the word you want to search for. Take capital letters into account
    key = "down"

    'Set worksheet to the first sheet in your workbook
    Set ws = ThisWorkbook.Sheets(1)

    'Change this to the range you want to search
    Set rng = ws.Range("A1:A100")

    'Check if the target is in the range
    If Not Intersect(Target, rng) Is Nothing Then
        If Target.Value <> key Then
        'Change this to you function call
            MsgBox "The target is inside the range and the value is different from '" & key & "'"
        End If
    End If

End Sub
Private子工作表\u更改(ByVal目标作为范围)
将ws设置为工作表
将键变暗为字符串
变暗rng As范围
'设置要搜索的单词。考虑大写字母
key=“向下”
'将工作表设置为工作簿中的第一张工作表
设置ws=ThisWorkbook.Sheets(1)
'将其更改为要搜索的范围
设置rng=ws.范围(“A1:A100”)
'检查目标是否在范围内
如果不相交(目标,rng)则为空
如果是Target.Value键,则
'将此更改为您的函数调用
MsgBox“目标在范围内,且值与“&key&”不同”
如果结束
如果结束
端接头

将光标放在测试更改子节点内,点击PF5运行它

private Sub Change()
Dim txt As String
Dim rng As Range
Dim vec As String
    txt = ActiveCell.Value
    rng = ("K2:K700")
    vec = "Down"

   If r_ng.txt <> vec Then
    Call DelRCE ' or "Run DelRCE" if it is a function
   End If
End Sub

Private Sub test_Change()
    call Change
End Sub
private子变更()
以字符串形式显示文本
变暗rng As范围
作为字符串的Dim vec
txt=ActiveCell.Value
rng=(“K2:K700”)
vec=“向下”
如果r_ng.txt vec那么
如果是函数,则调用“DelRCE”或“Run DelRCE”
如果结束
端接头
专用子测试_变更()
找零钱
端接头

将以下代码添加到相关的工作表模块中,在
工作表\u Change
事件下:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim vec As String
vec = "Down"

If Not Intersect(Target, Range("K2:K700")) Is Nothing Then ' check that modifed cell is inside the Range("K2:K700")
    If Target.Count > 1 Then Exit Sub ' Optional :  if more than 1 cell selected exut the sub

    If Not Target.Value Like vec Then ' Also possible to use: If Target.Value <> vec
        Call Macro
    End If
End If

End Sub
选项显式
私有子工作表_更改(ByVal目标作为范围)
作为字符串的Dim vec
vec=“向下”
如果不相交(目标,范围(“K2:K700”))为空,则“检查修改的单元格是否在范围(“K2:K700”)内”
如果Target.Count>1,则退出Sub'可选:如果选择的单元格超过1个,则退出Sub
如果不是像vec那样的Target.Value,那么也可以使用:If Target.Value vec
调用宏
如果结束
如果结束
端接头

您所说的私人Sub(变更)是什么意思?这是否意味着在工作表模块上有更改事件代码?是的,工作表更改。如果搜索词在该范围内,并且在整个范围内循环,并且花费的时间太长,则此操作有效。我需要确定输入范围的最后一个单词是否是指定的单词,然后调用宏。因此,在更改工作表时,您需要检查两件事:1。如果更改的单元格在指定的范围2内。如果第一个选项为“是”,那么它是否具有特定值?是否正确理解?谢谢Noceo。Q1.=是的,第二季度不等于值“Down”对不起耽搁了,周末很忙。我更改了代码以符合您的描述。请注意,它是敏感的。如果需要的话,这可以很容易地解决。没问题。一定要接受答案,让其他有同样问题的人更容易回答。