【发布时间】:2018-11-26 15:27:05
【问题描述】:
我使用以下代码从工作表中的范围创建 10 行和 2 列的变体:
Dim ws As Worksheet
Dim leRange As Variant
Set ws = ThisWorkbook.Worksheets(1)
leRange = ws.Range(ws.Cells(1, 1), ws.Cells(10, 2)).Value
第一列总是被填满,但第二列不被填满。
当我在 Locals 窗口中检查 leRange 时,当单元格中没有任何内容时,值为 Empty 类型为 Variant/Empty。我想将其更改为 `Variant/String 类型的 ""。
我可以循环变体来检查和替换,但我想知道是否有更聪明的方法来做,谢谢!
编辑:将这些数据作为参数的函数需要字符串的变体,我无法更改它,因此我需要进行替换。
【问题讨论】:
-
似乎过早的优化。
Variant是一种相当有效的数据类型。除非您知道这是一个实际问题,否则为什么要花费 CPU 周期将空变体更改为空字符串? -
@JohnColeman 因为获取这些数据的函数要求其中只有字符串的变体,我无法更改它
-
我认为没有更有效的方法了。您可以使用
Evaluate来获取一个包含空字符串的数组,但我怀疑它会更有效。 -
没有区别。将
Variant/Empty传递给接受String的函数,该函数会很高兴地得到vbNullString- 但是当子类型为Error时会出现问题,因此在将其传递给函数之前,请验证变量是否为@987654332 @ 和IsError,然后根据需要将其显式转换为String和CStr。 -
等等,函数 - 什么函数?我们至少能看到它的签名吗? “需要字符串的变体”根本没有意义。