VBA - 使用1d数组填充的Excel单元格不为空白

时间:2016-11-06 23:54:06

标签: excel vba excel-vba

我用定义为Variant的1d数组填充单元格。此数组中的所有3个变量都是公共字符串变量。有时变量是VbNullString,因此变成一个数组。

不幸的是,在Excel中选择与VbNullString值对应的空单元格时,它们被计为非空白,而= IsBlank()函数返回false。来自VBA的即时窗口的检查未检测到示例单元格中的任何内容:

?"check" & range("f4").Value & "character"

结果是:“checkcharacter”

如何清除这些单元格真的是空白并更改我的宏中的某些内容而不是填充它们?

Dim results As Variant

results = Array(Company, Address, Phone)

With WS
    Range(.Cells(resultCounter, 1), .Cells(resultCounter, UBound(results) + 1)).Value2 = results
End With

2 个答案:

答案 0 :(得分:0)

无法从您对您正在做的事情的描述中重现该问题:

Dim Company As String, Address As String, Phone As String

Sub Tester()

    Dim results As Variant

    Company = "CpmpanyA"
    Address = vbNullString
    Phone = "555-1212"

    results = Array(Company, Address, Phone)

    With ActiveSheet
        .Range(.Cells(20, 1), .Cells(20, UBound(results) + 1)).Value2 = results
    End With

    Debug.Print ActiveSheet.Evaluate("ISBLANK(B20)") '>> ###True###

End Sub

答案 1 :(得分:0)

我找到了原因。在运行宏之前将单元格格式设置为Text时会发生错误。当我将其更改为“常规”时,应为空白的单元格为空白。执行宏后更改单元格格式对此行为没有影响。

此外,我测试了VbNullString的分配单元格值与文本格式单元格一起正常工作。它必须是数组,它是Variant,导致这种行为。

很遗憾,因为我希望在选择列时能够同时使用适当的值,并确保将值转换为通常格式设置不应该的值。