当试图阅读#NAME? 从excel到string的值会导致types不匹配错误

我有一个macros从Excel中读取描述string,并找出数据中是否存在特定的string。

有时input文件可能包含像#NAME这样的值? 在牢房里。 当macros到达这个单元格时,它只是给出错误types不匹配运行时错误13在下面的行。

我只是想忽略这一行,继续下一行。 我应该如何给予validation(如果)。 我正在使用'do-循环直到'循环。 descriptionString是一个stringvariables。

descriptionString = currentwrkbk.Worksheets(1).Cells(i, 1).Value 

使用IsError,就像这样

if iserror(currentwrkbk.Worksheets(1).Cells(i, 1).Value))....

@Nathan_Sav已经给你一个选项。 这是另一个。

 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. 

您可能只想使用Range对象的SpecialCells方法遍历有效的单元格,从而允许您筛选返回范围的范围,其中“所有与指定types和值匹配的单元格”

例如

 myRange.SpecialCells(XlCellType.xlCellTypeConstants, xlTextValues) 

将只返回包含常量(即不是由公式产生)文本值的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 

为什么不使用IsError与Clng一起转换为错误代码并对此进行testing

 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