有没有办法在 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