我有一个从excel读取描述字符串的宏,并发现数据中是否存在特定的字符串。
有时输入文件可能包含像#NAME这样的值?在牢房里。当宏到达此单元格时,它只是在下一行中给出错误类型不匹配运行时错误13。
我只是想忽略这一行并继续下一行。我该如何进行验证(如果)。我正在使用'do-loop until'来循环。 descriptionString是一个字符串变量。
descriptionString = currentwrkbk.Worksheets(1).Cells(i, 1).Value
答案 0 :(得分:5)
使用IsError,类似
if iserror(currentwrkbk.Worksheets(1).Cells(i, 1).Value))....
答案 1 :(得分:2)
@Nathan_Sav有alredy给你一个选项。这是另一个。
If Not CVErr(currentwrkbk.Worksheets(1).Cells(i, 1).Value) = CVErr("2029") Then _
descriptionString = currentwrkbk.Worksheets(1).Cells(i, 1).Value
以下是列表的其余部分
2007 returns a #DIV/0! error.
2042 returns a #N/A error.
2029 returns a #NAME? error.
2000 returns a #NULL! error.
2036 returns a #NUM! error.
2023 returns a #REF! error.
2015 returns a #VALUE! error.
答案 2 :(得分:2)
您可能只想使用Range
myRange.SpecialCells(XlCellType.xlCellTypeConstants, xlTextValues)
对象的SpecialCells
方法迭代有效单元格,这样您就可以使用“所有符合指定类型的单元格来过滤返回范围的范围和价值“
myRange
将返回Option Explicit
Sub main()
Dim cell As Range
Dim currentwrkbk As Workbook
Dim descriptionString As String
With currentwrkbk.Worksheets(1)
For Each cell In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).SpecialCells(XlCellType.xlCellTypeConstants, xlTextValues) '<--| loop through text values of column "A" only
descriptionString = cell.value
Next cell
End With
End Sub
个包含常量(即不是公式的结果)文本值的单元格
以便为您的目的提供可能的代码段如下:
$ echo "cat //root/artifact/b" | xmllint --shell BuildResult.xml | sed '/^\/ >/d' | sed 's/<[^>]*.//g' | tr -d '\n' | awk -F"-------" '{print $2}'
5.tar
答案 3 :(得分:0)
为什么不使用IsError和Clng转换为错误代码并测试
Option Explicit
Sub Test()
Dim rng As Excel.Range
Set rng = ThisWorkbook.Worksheets(1).Range("i13")
'* i creat a #NAME here
rng.Formula = "=namenoexist"
Debug.Assert IsHashName(rng)
End Sub
Function IsHashName(ByVal rng As Excel.Range) As Boolean
Debug.Assert Not rng Is Nothing
Debug.Assert rng.Rows.Count = 1
Debug.Assert rng.Columns.Count = 1
Dim v As Variant
v = rng.Value2
'*So test for IsError and then cast to a long and test for 2029 to see if i
If IsError(v) Then
If CLng(v) = 2029 Then
IsHashName = True
End If
End If
End Function