Vba “我的宏”不拾取值#不适用;清除内容
所以我有一个从a列到J列的数据范围(行可以变化)。我需要宏做的是拾取a行中单元格值为IGNORE或#N/a的任何位置,并清除整行的内容。之后,我有VBA删除所有空行。我遇到的问题是VBA不希望拾取“#N/A”值并清除内容-如果我忽略此项,它只需忽略即可完成我想要的操作 请有人帮忙-我想这可能与N/A没有作为文本提取有关 多谢各位Vba “我的宏”不拾取值#不适用;清除内容,vba,excel,Vba,Excel,所以我有一个从a列到J列的数据范围(行可以变化)。我需要宏做的是拾取a行中单元格值为IGNORE或#N/a的任何位置,并清除整行的内容。之后,我有VBA删除所有空行。我遇到的问题是VBA不希望拾取“#N/A”值并清除内容-如果我忽略此项,它只需忽略即可完成我想要的操作 请有人帮忙-我想这可能与N/A没有作为文本提取有关 多谢各位 Dim end_range As Double Dim n As Double 'Set the range in which to search for Ignor
Dim end_range As Double
Dim n As Double
'Set the range in which to search for Ignore
Sheets("Submit").Select
Range("A1").End(xlDown).Select
end_range = ActiveCell.Row
'Store the values of in a range
ReDim storeval(end_range)
For n = 1 To end_range
storeval(n) = Range(Cells(n, 1), Cells(n, 1)).Value
Range(Cells(n, 2), Cells(n, 2)).Value = storeval(n)
Next n
'Delete the entirerow if the value contains ignore or N/A
For n = 1 To end_range
If storeval(n) = "IGNORE" Or storeval(n) = "#N/A" Then
Range("A" & n).EntireRow.ClearContents
End If
Next n
Sheets("Submit").Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
如果在单元格中使用=NA()
,则您看到的#N/A
只是错误对象的文本表示。
因此,您需要测试以下各项,而不是使用storeval(n)=“#n/A”
:
- 这是一个错误,使用
iError
- 使用
CVErr(xlErrNA)
Function IsNa(value)
If Not IsError(value) Then
IsNa = False
ElseIf value = CVErr(xlErrNA) Then
IsNa = True
Else
IsNa = False
End If
End Function
然后通过IsNa(storeval(n))调用它。如果您在单元格中使用=NA()
,那么您看到的#n/A
只是错误对象的文本表示。
因此,您需要测试以下各项,而不是使用storeval(n)=“#n/A”
:
- 这是一个错误,使用
iError
- 使用
CVErr(xlErrNA)
Function IsNa(value)
If Not IsError(value) Then
IsNa = False
ElseIf value = CVErr(xlErrNA) Then
IsNa = True
Else
IsNa = False
End If
End Function
然后通过调用IsNa(storeval(n))来发现“#n/A”
您需要查找单元格的值CVErr(xlerna)
您可能还想切换If
和或与选择大小写
For n = 1 To end_range
Select Case storeval(n)
Case "IGNORE", CVErr(xlErrNA)
Range("A" & n).EntireRow.ClearContents
End Select
Next n
要发现“#N/A”
您需要查找单元格的值CVErr(xlErrNA)
您可能还想切换If
和或与选择大小写
For n = 1 To end_range
Select Case storeval(n)
Case "IGNORE", CVErr(xlErrNA)
Range("A" & n).EntireRow.ClearContents
End Select
Next n
我删除了我的帖子,我想我们都做得太快了,如果单元格出错,运行时会出错。谢谢你,但是当我在if的位置插入case函数时,它会给我错误类型不匹配。还有一个简单的问题。我的单元格中的#N/A是由于以前的公式错误造成的,但在我查看的工作表中,它们被粘贴为值(单元格格式常规)。CvErr(xlErrNA)还会接收它们吗?我删除了我的帖子,我认为我们都太快了,如果单元格出错,运行时出错。谢谢你,但是当我插入if将是的case函数时,它给了我错误类型不匹配。还有一个简单的问题。我的单元格中的#N/A是由于以前的公式错误造成的,但在我查看的工作表中,它们被粘贴为值(单元格格式常规)。CvErr(xlErrNA)还会把它们捡起来吗?很抱歉这个愚蠢的问题,但是在我的代码中我应该把它叫做哪里?如果storeval(n)=“IGNORE”或IsNa(storeval(n)),那么
很抱歉这个愚蠢的问题,但是在我的代码中我应该把它叫做哪里?如果storeval(n)=“IGNORE”或IsNa(storeval(n)),那么