Vba 是否可以让此宏更改Instr值所在行中的值?
我创建了一个宏,用于在工作表中查找部分字符串。如果找到该字符串,它会在不同的冒号中将值更改为0 宏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
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
不是必需的。