gpt4 book ai didi

Excel:type() 和 WorksheetFunction.IsText() 对长字符串失败

转载 作者:行者123 更新时间:2023-12-04 19:50:36 25 4
gpt4 key购买 nike

其他人是否发现以下行为?我在 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分别为“文本”和“错误值”。 VarType() 的返回值 8 (= vbString) 具有 meaning “字符串”。

因此,如果传递给它们的参数超过 255 个字符,Excel 中的 type() 和 Excel VBA 中的 WorksheetFunction.IsText() 似乎不起作用。 Excel 中的IsText() 没有这个限制。 WorksheetFunction.IsText() 失败的解决方法是测试 VarType(...) = vbString(这可能更好)。

这些是合法错误还是我做错了什么?

是否有编译经过验证的错误的地方,这样当我看到这样的东西时,我就不必怀疑自己是否会发疯?

最佳答案

如果直接使用 vArg.Value 而不是 Range 对象,

WorksheetFunction.IsText 看起来不错。 =CELL("type", A2) 也可以。

TYPE 功能问题似乎是未记录的限制。好像和"Text values in formulas are limited to 255 characters."有关错误,因为 documenentation Remarks提及:

You cannot use TYPE to determine whether a cell contains a formula. TYPE only determines the type of the resulting, or displayed, value. If value is a cell reference to a cell that contains a formula, TYPE returns the type of the formula's resulting value.

关于Excel:type() 和 WorksheetFunction.IsText() 对长字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53128145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com