Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 根据在其他单元格中输入的值返回单元格中的文本_Excel_Vba - Fatal编程技术网

Excel 根据在其他单元格中输入的值返回单元格中的文本

Excel 根据在其他单元格中输入的值返回单元格中的文本,excel,vba,Excel,Vba,我的表(F->I)中有可能无限行的列,这些列是带有简单的是/否列表的下拉列表 它以空行开始,用户在其他行中输入数据,然后根据问题选择是/否 我要找的是一些VBA,如果用户在F列中选择了“否”,那么在K列中,用“F列:”预填充。其想法是,任何被选为“否”的内容都用K填充,以便用户可以添加注释和参考列F。例如:“列F:这不符合要求,因为xxxxx” 我在搜索网络时尝试了几个例子,但似乎没有任何效果: R = 4 'loop to the last row Do Until Range("

我的表(F->I)中有可能无限行的列,这些列是带有简单的是/否列表的下拉列表

它以空行开始,用户在其他行中输入数据,然后根据问题选择是/否

我要找的是一些VBA,如果用户在F列中选择了“否”,那么在K列中,用“F列:”预填充。其想法是,任何被选为“否”的内容都用K填充,以便用户可以添加注释和参考列F。例如:“列F:这不符合要求,因为xxxxx”

我在搜索网络时尝试了几个例子,但似乎没有任何效果:

R = 4

'loop to the last row
Do Until Range("F" & R) = ""
    'check each cell if if contains 'apple' then..
    '..place 'Contains Apple' on column B
    If InStr(1, Range("F" & R), "No") Then
        Range("K" & R) = "Test Plan"
    End If
    
    R = R + 1
Loop
我也试着把它放在一个工作表变更子表中,但它并没有像预期的那样工作


谢谢你的帮助。谢谢

请在
工作表中尝试此代码\u更改

Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 6 And Target.Value = "No" Then
            Target.Parent.Range("K" & Target.Row).Value = "Column F: "
        End If
End Sub

这就是你想要的吗?我已经对代码进行了注释。要了解更多的解释,我建议您仔细阅读

在行动中


工作表更改
是一种更好的方法,而不是在整个范围内循环。您能否共享工作表更改的代码?Yu可能还想看看如何使用,我只是将上面的内容复制到工作表中,并认为它会起作用,正如通读一样,它是有意义的,应该会起作用,但它没有让Glenn G高兴,只是尝试了一下,不幸的是没有雪茄。我想这可能是因为我有另一个工作表更改子项在那个里,但我删除了它,当我在列中选择“是”时,它并没有做任何事情F@Martin我遇到的情况是,“No”和“No”不一样,所以它区分大小写。看看这是否是问题所在having@Martin我已经用一些选项更新了我的答案(
Option Explicit
Option Compare Text
),这些选项位于模块顶部(而不是任何过程中),它们将改变模块比较事物的方式。这将绕过区分大小写的问题,但如果您向模块中添加任何其他代码,请记住这一点。只需重新阅读您的注释。我发布的代码只有在答案为“否”时才会运行。如果答案为“是”,则不会执行任何操作。这不是预期的操作吗?我已经有了作为另一个例程的一部分的选项,所以区分大小写不会成为代码的问题,因为默认值是肯定的和否定的,但不幸的是K列没有得到更新。所以我有一个问题,问是否有东西被检查过。如果是,则无需在K列中添加任何内容,因为一切都很好,但是,如果不是,则K列应预先填充一些内容以引用该列/问题,以及将行转换为另一种颜色的条件格式(但我已经完成了这一部分)。
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim aCell As Range
    
    '~~> Error handling
    On Error GoTo Whoa
    
    '~~> Switch off events
    Application.EnableEvents = False
    
    '~~> Check of the change happened in Col F
    If Not Intersect(Target, Columns(6)) Is Nothing Then
        '~~> Loop through all the cells in col F where
        '~~> the change happened
        For Each aCell In Target.Cells
            '~~> Check if the value is NO
            If UCase(aCell.Value2) = "NO" Then
                '~~> Update Col K
                Range("K" & aCell.Row).Value = "Test Plan"
            Else
                '~~> If not NO then WHAT ACTION? For example user
                '~~> deletes the existing NO
            End If
        Next
    End If
    
Letscontinue:
    '~~> Switch events back on
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub