有没有办法在 VBA 中将单元格声明为 NaN?
Is there a way to declare cells as NaN in VBA?
我正在编写 VBA 代码来导入 txt 文件 (ascii) 并根据这些 txt 文件中的数据执行计算。
这些 txt 文件将写入特定的列。当其中一个文件丢失时,我希望能够用类似 NaN 的内容填充这些列,这样我仍然可以执行计算,但结果将是 NaN。如果列为空,肯定会报错。
我尝试了 xlErrNull,但它显示类型不匹配错误。
你可以做的是生成一个#NA,例如:
Sub x()
Range("A1:A1").Value = CVErr(xlErrNA)
End Sub
在这个例子中,如果我们做 b1=a1*2 它将 return #NA 而如果 a1 填充了一个数字 n b1 将 return 2n.
请尝试下一个代码。它将在使用范围的任何空白单元格中添加字符串“NaN”:
Sub fillNaNInEmptyCells()
Dim sh As Worksheet, rngE As Range
Set sh = ActiveSheet 'use here your necessary sheet
On Error Resume Next
Set rngE = sh.UsedRange.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rngE Is Nothing Then
rngE.value = "NaN"
End If
End Sub
如果您改变主意想要删除字符串,请使用下一个代码:
Sub replaceNaN()
Dim sh As Worksheet
Set sh = ActiveSheet
sh.UsedRange.Replace "NaN", ""
End Sub
我正在编写 VBA 代码来导入 txt 文件 (ascii) 并根据这些 txt 文件中的数据执行计算。
这些 txt 文件将写入特定的列。当其中一个文件丢失时,我希望能够用类似 NaN 的内容填充这些列,这样我仍然可以执行计算,但结果将是 NaN。如果列为空,肯定会报错。
我尝试了 xlErrNull,但它显示类型不匹配错误。
你可以做的是生成一个#NA,例如:
Sub x()
Range("A1:A1").Value = CVErr(xlErrNA)
End Sub
在这个例子中,如果我们做 b1=a1*2 它将 return #NA 而如果 a1 填充了一个数字 n b1 将 return 2n.
请尝试下一个代码。它将在使用范围的任何空白单元格中添加字符串“NaN”:
Sub fillNaNInEmptyCells()
Dim sh As Worksheet, rngE As Range
Set sh = ActiveSheet 'use here your necessary sheet
On Error Resume Next
Set rngE = sh.UsedRange.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rngE Is Nothing Then
rngE.value = "NaN"
End If
End Sub
如果您改变主意想要删除字符串,请使用下一个代码:
Sub replaceNaN()
Dim sh As Worksheet
Set sh = ActiveSheet
sh.UsedRange.Replace "NaN", ""
End Sub