Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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 是否可以让此宏更改Instr值所在行中的值?_Vba_Excel - Fatal编程技术网

Vba 是否可以让此宏更改Instr值所在行中的值?

Vba 是否可以让此宏更改Instr值所在行中的值?,vba,excel,Vba,Excel,我创建了一个宏,用于在工作表中查找部分字符串。如果找到该字符串,它会在不同的冒号中将值更改为0 宏 Sub Contain_Copy() Dim ranger As Long Dim lastrow As Long Dim FromSheet As Worksheet, ToSheet As Worksheet Dim a

我创建了一个宏,用于在工作表中查找部分字符串。如果找到该字符串,它会在不同的冒号中将值更改为0

Sub Contain_Copy()
    Dim ranger                              As Long
    Dim lastrow                             As Long
    Dim FromSheet As Worksheet, ToSheet     As Worksheet
    Dim a                                   As Long

    Set FromSheet = Sheets("C")
    Set ToSheet = Sheets("D")
    lastrow = FromSheet.Cells(Rows.Count, "N").End(xlUp).Row

    For ranger = 2 To lastrow
        If InStr(1, FromSheet.Cells(ranger, "N"), "ET7", vbTextCompare) > 0 Then
            a = a + 1
            Worksheets("C").Cells(a, 3) = 0
        End If
    Next ranger
End Sub
在本例中,我的工作表“E3A02ET7”中的字符串位于“N”列和第9行。 由于包含“ET7”,列“C”中的值将更改为0

问题是它更改了第1行中的值

我希望它更改第9行中的值,因为这是与部分字符串ET7的值相同的行

你能帮我找到解决办法吗

非常感谢,

B.van Starkenburg

您只需将
从sheet.Cells(a,3)=0
更改为
从sheet.Cells(ranger,3)=0

因此,您的代码变成:

Sub Contain_Copy()
    Dim ranger                              As Long
    Dim lastrow                             As Long
    Dim FromSheet As Worksheet, ToSheet     As Worksheet

    Set FromSheet = Sheets("C")
    lastrow = FromSheet.Cells(Rows.Count, "N").End(xlUp).Row

    For ranger = 2 To lastrow
        If InStr(1, FromSheet.Cells(ranger, "N"), "ET7", vbTextCompare) > 0 Then
            FromSheet.Cells(ranger, 3) = 0
        End If
    Next ranger
End Sub

代码是这样的

Sub Contain_Copy()
Dim ranger                              As Long
Dim lastrow                             As Long
Dim FromSheet As Worksheet, ToSheet     As Worksheet
Dim a                                   As Long

Set FromSheet = Sheets("C")
Set ToSheet = Sheets("D")
lastrow = FromSheet.Cells(Rows.Count, "N").End(xlUp).Row
With FromSheet
    For ranger = 2 To lastrow
        If InStr(.Cells(ranger, "N"), "ET7") Then
            .Cells(ranger, 3) = 0
        End If
    Next ranger
End With
End Sub

谢谢,所以定义“a”根本没有必要?@BerendStarkenburg-对,
a
不是必需的。