其他人是否发现以下行为?我正在Windows 7下运行Excel 2007。
在Excel VBA中:
Public Function bTest_IsText(vArg As Variant) As Boolean
bTest_IsText = WorksheetFunction.IsText(vArg)
End Function
Public Function nTest_VarType(vArg As Variant) As Integer
nTest_VarType = VarType(vArg)
End Function
在Excel工作表中:
A1: =REPT("-", 255)
A2: =REPT("-", 256)
A3: =ISTEXT(A1)
B3: =bTest_IsText(A1)
C3: =TYPE(A1)
D3: =nTest_VarType(A1)
A4: =ISTEXT(A2)
B4: =bTest_IsText(A2)
C4: =TYPE(A2)
D4: =nTest_VarType(A2)
单元格A3:D4结果:
TRUE TRUE 2 8
TRUE FALSE 16 8
type()
的返回值2和16分别具有meaning“文本”和“错误值”。 vbString
的返回值8(= VarType()
)具有meaning“ String”。
因此,如果传递给它们的参数超过255个字符,则Excel中的type()
和Excel VBA中的WorksheetFunction.IsText()
似乎不起作用。 Excel中的IsText()
没有此限制。 WorksheetFunction.IsText()
失败的一种解决方法是测试VarType(...) = vbString
(无论如何可能会更好)。
这些合法的错误还是我做错了什么?
是否有编译经过验证的错误的地方,所以当我看到类似的东西时,我不必怀疑自己是否会发疯?
答案 0 :(得分:0)
WorksheetFunction.IsText
而不是vArg.Value
对象,则 Range
似乎很好。 =CELL("type", A2)
也可以。
TYPE
函数问题似乎是未记录的限制。它似乎与"Text values in formulas are limited to 255 characters."错误有关,因为documenentation Remarks提到:
您不能使用TYPE来确定单元格是否包含公式。 TYPE仅确定结果或显示的值的类型。 如果value是对包含公式TYPE的单元格的单元格引用 返回公式结果值的类型。
答案 1 :(得分:0)
Public Function bTest_IsText(vArg As Variant) As Boolean
Dim tArg As Variant
tArg = vArg
bTest_IsText = WorksheetFunction.IsText(tArg)
End Function
使用此命令后,请弄清答案:
Public Function bTest_IsText(vArg As String) As Boolean
bTest_IsText = WorksheetFunction.IsText(vArg)
End Function
无论您在单元格“ A2”中放置什么,总会得出TRUE。
因此,我得出的结论是您的功能没有按照您的预期做。
一直在我身上