循环中存在类型不匹配错误的VBA Replace()
我对VBA相当陌生,我只是尝试用“0”替换列“N”和“O”中的任何字符“NA”、“ZZ”、“Z”。下面是一个带有循环中存在类型不匹配错误的VBA Replace(),vba,excel,loops,for-loop,Vba,Excel,Loops,For Loop,我对VBA相当陌生,我只是尝试用“0”替换列“N”和“O”中的任何字符“NA”、“ZZ”、“Z”。下面是一个带有if语句的循环,但出于某种原因,我一直在 运行时13错误,类型不匹配 有人能帮我纠正这个错误吗 谢谢 Dim v as String sym = Array("NA", "ZZ", "Z") If Worksheets("Sheet1").Columns("N") Then For Each a In sym v = Replace(v, a, "0") Ne
if
语句的循环,但出于某种原因,我一直在
运行时13错误,类型不匹配
有人能帮我纠正这个错误吗
谢谢
Dim v as String
sym = Array("NA", "ZZ", "Z")
If Worksheets("Sheet1").Columns("N") Then
For Each a In sym
v = Replace(v, a, "0")
Next a
ElseIf Worksheets("Sheet1").Columns("O") Then
For Each a In sym
v = Replace(v, a, "0")
Next a
End If
你可以这样做。这是一个很好的实践,可以指定
你可以这样做。这是一个很好的实践,可以指定
您不需要在单元格上循环,请尝试:
Sub lydias()
With Sheets("Sheet1").Range("N:O")
.Replace What:="NA", replacement:="0"
.Replace What:="ZZ", replacement:="0"
.Replace What:="Z", replacement:="0"
End With
End Sub
您不需要在单元格上循环,请尝试:
Sub lydias()
With Sheets("Sheet1").Range("N:O")
.Replace What:="NA", replacement:="0"
.Replace What:="ZZ", replacement:="0"
.Replace What:="Z", replacement:="0"
End With
End Sub
试试这个:
Sub test()
Dim sym As Variant
sym = Array("NA", "ZZ", "Z")
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim colums_range As Range
With ws
Set colums_range = Union(.Columns("N").SpecialCells(xlCellTypeConstants), .Columns("O").SpecialCells(xlCellTypeConstants))
End With
For Each element In sym
colums_range.Replace What:=CStr(element), Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next element
End Sub
试试这个:
Sub test()
Dim sym As Variant
sym = Array("NA", "ZZ", "Z")
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim colums_range As Range
With ws
Set colums_range = Union(.Columns("N").SpecialCells(xlCellTypeConstants), .Columns("O").SpecialCells(xlCellTypeConstants))
End With
For Each element In sym
colums_range.Replace What:=CStr(element), Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next element
End Sub
如果工作表(“Sheet1”).Columns(“N”),那么您打算用
@ScottCraner定义第N列。我只想替换第N列和第O列中出现的数组sym
中的字符。也许有更有效的方法吗?工作表(“Sheet1”)。Columns(“N”)
不返回布尔值。v是空字符串,因此,无论循环多少次,它都将保持为空字符串。如果工作表(“Sheet1”).Columns(“N”)中出现,那么您打算用@ScottCraner定义N列。我只想替换N列和O列中出现的数组sym
中的字符。也许有更有效的方法可以做到这一点?工作表(“Sheet1”).Columns(“N”)
不返回布尔值。而v是一个空字符串,因此无论循环多少次,它都将保持为空字符串。如果定义范围(“N:O”)
是否意味着从N到O选择列。如果我只需要执行N列和O列中的操作,不包括介于两者之间的操作,该怎么办?它不应该是范围(“N,O”)
?呃?在N和O之间没有圆柱。天哪…太阳在烤我的大脑。。哈哈XD。。。谢谢你的提醒。没关系,有一件事我很有信心,那就是我的字母表。它在上面的链接中——下面有一个例子。如果您被卡住了,请返回。如果您定义了范围(“N:O”)
是否意味着从N到O选择列。如果我只执行N和O列中的操作,不包括介于两者之间的操作,该怎么办?它不应该是范围(“N,O”)
?呃?在N和O之间没有圆柱。天哪…太阳在烤我的大脑。。哈哈XD。。。谢谢你的提醒。没关系,有一件事我很有信心,那就是我的字母表。它在上面的链接中——下面有一个例子。如果你被卡住了就回来。