Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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,我想做的是,如果列O包含“weekend”,那么将列M cells的值更改为“3” 代码的问题是,您得到的是列A的最后一行,这将阻止执行For。要修复代码,可以通过多种方式进行 使用范围 一种是使用Range属性,这样就可以显式地编写列名,如下所示: Sub weekly_weekend() lastrow = Sheet1.Range("O" & Sheet1.Rows.Count).End(xlUp).Row Application.ScreenUpdating =

我想做的是,如果列O包含“weekend”,那么将列M cells的值更改为“3”


代码的问题是,您得到的是
列A
的最后一行,这将阻止执行
For
。要修复代码,可以通过多种方式进行

使用范围
  • 一种是使用
    Range
    属性,这样就可以显式地编写列名,如下所示:

    Sub weekly_weekend()
        lastrow = Sheet1.Range("O" & Sheet1.Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
    
        For x = 2 To lastrow
            If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then Sheet1.Range("M" & x).Value = "3"
        Next x
    
        Application.ScreenUpdating = True
    End Sub
    
    Sub weekly_weekend()
        lastrow = Sheet1.Cells(Sheet1.Rows.Count, 15).End(xlUp).Row
        Application.ScreenUpdating = False
    
        For x = 2 To lastrow
            If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then Sheet1.Range("M" & x).Value = "3"
        Next x
    
        Application.ScreenUpdating = True
    End Sub
    
选择正确的列
  • 或者,您可以简单地选择所需列的正确编号(在本例中,
    列O
    15
    ),如下所示:

    Sub weekly_weekend()
        lastrow = Sheet1.Range("O" & Sheet1.Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
    
        For x = 2 To lastrow
            If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then Sheet1.Range("M" & x).Value = "3"
        Next x
    
        Application.ScreenUpdating = True
    End Sub
    
    Sub weekly_weekend()
        lastrow = Sheet1.Cells(Sheet1.Rows.Count, 15).End(xlUp).Row
        Application.ScreenUpdating = False
    
        For x = 2 To lastrow
            If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then Sheet1.Range("M" & x).Value = "3"
        Next x
    
        Application.ScreenUpdating = True
    End Sub
    
注意:请注意,如果添加删除列,使用第二种方法,您需要记住相应地更改代码中的列索引


希望这能有所帮助。

那么什么不起作用呢?有错误吗?如果是,什么错误,在哪一行?我看到的这一行唯一的错误是,
行前面缺少了一个可选的
工作表
限定符。Count
。你能详细说明一下吗?