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
需要简单的通用vba宏脚本根据其他单元格的值更改单元格的值_Vba_Excel - Fatal编程技术网

需要简单的通用vba宏脚本根据其他单元格的值更改单元格的值

需要简单的通用vba宏脚本根据其他单元格的值更改单元格的值,vba,excel,Vba,Excel,需要简单的通用vba宏脚本来根据其他单元格的值更改单元格的值 我的值在e1:e1000的范围内。在该范围内的任何单元格中,如果值为“x”,则其相应行中相邻的2个单元格应将值更改为“y” 例如:如果e1=“x”,那么f1=“y”和g1=“y” 同样地,对于其他细胞也一样…Srikanth,Reafidy有一个观点。甚至我也更喜欢配方奶粉。但是,如果您仍然需要VBA代码,它就是 使用公式 在单元格F1和G1中键入此项,然后将其向下拖动到F1000和G1000 =如果(E1=“X”,“Y”,“Y”)

需要简单的通用vba宏脚本来根据其他单元格的值更改单元格的值

我的值在e1:e1000的范围内。在该范围内的任何单元格中,如果值为“x”,则其相应行中相邻的2个单元格应将值更改为“y”

例如:如果e1=“x”,那么f1=“y”和g1=“y”


同样地,对于其他细胞也一样…

Srikanth,Reafidy有一个观点。甚至我也更喜欢配方奶粉。但是,如果您仍然需要VBA代码,它就是

使用公式

在单元格F1和G1中键入此项,然后将其向下拖动到F1000和G1000

=如果(E1=“X”,“Y”,“Y”)

使用代码

Sub Sample()
    Sheets("Sheet1").Range("F1:F1000").Formula = "=If(E1=""X"",""Y"","""")"
    Sheets("Sheet1").Range("G1:G1000").Formula = "=If(E1=""X"",""Y"","""")"
End Sub
跟进

Sheets("Sheet1").Range("F1:F1000").Formula = "=If(D1=""Ready"",""Ready"","""")"
或者,如果您不想同时使用这些公式,请使用此

Sub Sample()
    For i = 1 To 1000
        With Sheets("Sheet1")
            If .Range("D" & i).Value = "Ready" Then _
            .Range("F" & i).Value = "Ready" Else .Range("F" & i).Value = ""
        End With
    Next i
End Sub
更多后续行动

Sheets("Sheet1").Range("F1:F1000").Formula = "=If(D1=""Ready"",""Ready"","""")"

谢谢你的回复。我试着用一个没有公式的,但即使这样也失败了。我把代码放在了工作表更改函数中。即使工作表的更改在工作表1中,其“with Sheets”(“Sheet1”)行也会出现抛出错误。知道为什么吗Srikanth Yadake 11分钟前

试试这个

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Whoa

    If Not Intersect(Target, Range("D1:D1000")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Value = "Ready" Then _
        Target.Offset(, 2).Value = "Ready" Else Target.Offset(, 2).Value = ""
    End If

LetsContinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

我试过上面的代码,它不起作用。无法使用直接公式,因为单元格与列表值绑定。我使用的代码如下所示:Sheets(“Sheet1”).Range(“F1:F1000”).Formula=“=If(Range”(“D1:D1000”)=“Ready”(“就绪”)”)“当任何行的D列中的值更改为Ready时,F列中同一行中的值也应更改为Ready。@Srikanth Yadake:我已更新了上面的代码。:)请参阅“跟进”,谢谢您的回复。我试着用一个没有公式的,但即使这样也失败了。我把代码放在了工作表更改函数中。即使工作表的更改在工作表1中,其“with Sheets”(“Sheet1”)行也会出现抛出错误。知道为什么吗?@Srikanth Yadake:您不能在中使用该代码,因为它在工作表更改事件中。请稍等,更新代码